当前位置:  开发笔记 > 后端 > 正文

LESSCHARSET = utf-8 less似乎不起作用

如何解决《LESSCHARSET=utf-8less似乎不起作用》经验,为你挑选了2个好方法。

我正在尝试查看UTF-8文本文件/流less,即使我像这样调用它:

cat file | LESSCHARSET=utf-8 less

非ASCII兼容的UTF-8字符无法正确显示.相反,它们的十六进制值在括号中突出显示,例如.

使用UTF-8编码在vim中读取相同的文本不会产生任何问题.所以我在想我调用的方式有问题less.

我的locale输出如下

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

我的较少版本是XCode在OSX Leopard上安装的版本:

$ less --version | sed 's/^/    /'
less 394
Copyright (C) 1984-2005 Mark Nudelman

less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution, 
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less

locale -a | grep US | sed 's/^/ /' 输出以下内容:

en_AU.US-ASCII
en_CA.US-ASCII
en_GB.US-ASCII
en_NZ.US-ASCII
en_US
en_US.ISO8859-1
en_US.ISO8859-15
en_US.US-ASCII
en_US.UTF-8

Teddy.. 8

    什么是locale命令的输出?它是UTF-8语言环境吗?

    你确定你的终端设置为显示UTF-8吗?是否echo -e '\xe2\x82\xac'产生欧元(欧元)标志?

    您设置的区域设置是否已安装在系统上?它是否存在于locale -a输出列表中?

    less你用的是什么版本的?(运行less --version以找出答案.) 真的,真正的旧版本甚至不支持LESSCHARSET.这不太可能是这种情况,因为我有一个less版本为382 的Debian"sarge"系统, 如果正确设置了语言环境,它甚至不需要LESSCHARSET.

@dan只是为了检查,`echo -e'\ xe2\x82\xac'`打印欧元符号,但`echo -e'\ xe2\x82\xac'| 少打印盒子? (5认同)

实际上,`echo -e'\ xe2\x82\xac'| less`工作正常,并显示一个欧元符号.这帮我弄清了部分问题.我正在测试的文件实际上是用latin-1编码的,我错误地查看了Vim`编码`值而不是Vim`fileencoding`值来确定它的编码.做'LESSCHARSET = latin1 less file`现在显示`?`diamonds字符应该是的钻石.我猜应该是这样的? (2认同)


小智.. 5

我的猜测是你的文件不是UTF8而是ISO8859.(字符应该是'ô'吗?)

LANG=en_US.ISO-8859-1 xterm.启动xterm .然后验证语言环境(输出locale应该类似于en_US.ISO-8859-1).然后使用less来查看文件.它显示正确吗?

请注意,仅在LESSCHARSET=iso8859不启动新终端的情况下使用是不够的. LESSCHARSET告诉我们终端可以解释iso8859,但是你的终端可能会显示UTF8,因为欧元符号显示正确.但由于\ xf4不是有效的utf8字符,终端可能会显示类似" "的内容.



1> Teddy..:

    什么是locale命令的输出?它是UTF-8语言环境吗?

    你确定你的终端设置为显示UTF-8吗?是否echo -e '\xe2\x82\xac'产生欧元(欧元)标志?

    您设置的区域设置是否已安装在系统上?它是否存在于locale -a输出列表中?

    less你用的是什么版本的?(运行less --version以找出答案.) 真的,真正的旧版本甚至不支持LESSCHARSET.这不太可能是这种情况,因为我有一个less版本为382 的Debian"sarge"系统, 如果正确设置了语言环境,它甚至不需要LESSCHARSET.


@dan只是为了检查,`echo -e'\ xe2\x82\xac'`打印欧元符号,但`echo -e'\ xe2\x82\xac'| 少打印盒子?
实际上,`echo -e'\ xe2\x82\xac'| less`工作正常,并显示一个欧元符号.这帮我弄清了部分问题.我正在测试的文件实际上是用latin-1编码的,我错误地查看了Vim`编码`值而不是Vim`fileencoding`值来确定它的编码.做'LESSCHARSET = latin1 less file`现在显示`?`diamonds字符应该是的钻石.我猜应该是这样的?

2> 小智..:

我的猜测是你的文件不是UTF8而是ISO8859.(字符应该是'ô'吗?)

LANG=en_US.ISO-8859-1 xterm.启动xterm .然后验证语言环境(输出locale应该类似于en_US.ISO-8859-1).然后使用less来查看文件.它显示正确吗?

请注意,仅在LESSCHARSET=iso8859不启动新终端的情况下使用是不够的. LESSCHARSET告诉我们终端可以解释iso8859,但是你的终端可能会显示UTF8,因为欧元符号显示正确.但由于\ xf4不是有效的utf8字符,终端可能会显示类似" "的内容.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有