如何对 UTF-8 文件进行分页并查看正确的字符?

如何对 UTF-8 文件进行分页并查看正确的字符?

如果我在包含 UTF-8 的文件上使用 cat,它会正确显示:

% cat /tmp/sample
<concept code="endangeredLanguage">
  <description value="The language is endangered at the given date"@en/>
  <description value="La lengua está en vías de extinción en la fecha dada"@es/>
  <description value="O idioma está em vias de extinção na data indicada"@pt/>
  <description value="La langue est menacée à la date indiquée"@fr/>
  <description value="ある時点でその言語は絶滅寸前である"@ja/>
  <description value="De taal is bedreigd met uitsterven op de gegeven datum"@nl/>
</concept>

但如果我使用“less”,非 ASCII 字符将被转义:

% less /tmp/sample
<concept code="endangeredLanguage">
  <description value="The language is endangered at the given date"@en/>
  <description value="La lengua est<C3><A1> en v<C3><AD>as de extinci<C3><B3>n en la fecha dada"@es/>
  <description value="O idioma est<C3><A1> em vias de extin<C3><A7><C3><A3>o na data indicada"@pt/>
  <description value="La langue est menac<C3><A9>e <C3><A0> la date indiqu<C3><A9>e"@fr/>
  <description value="<E3><81><82><E3><82><8B><E6><99><82><E7><82><B9><E3><81><A7><E3><81><9D><E3><81><AE><E8><A8><80><E8><AA><9E><E3><81><AF><E7><B5><B6><E6><BB><85><E5><AF><B8><E5><89><8D><E3><81><A7><E3><81><82><E3><82><8B>"@ja/>
  <description value="De taal is bedreigd met uitsterven op de gegeven datum"@nl/>
</concept>

大概是因为 less 将它们视为二元的。如何对输出进行分页,但仍能看到正确的字符?

答案1

less常见问题解答中对此进行了解释less可以显示非英文字符吗?

Less 有两种显示非英文字符的方式。如果您的系统使用非 ASCII 单字节字符集,则应使用正确的“区域设置”设置来设置系统。如果您的系统不支持 setlocale,您可以设置LESSCHARSETLESSCHARDEF环境变量来告诉 less 您正在使用什么语言。有关详细信息,请参阅手册页中的“国家字符集”部分。

如果您的系统支持非 ASCII 文本的 Unicode UTF-8 编码(正如许多现代系统所做的那样),您应该将区域设置设置为包含“UTF-8”或“UTF8”(大写或小写都可以) ),或设置LESSCHARSET为“utf-8”。

答案2

将以下变量添加到您的环境中:

export LESSCHARSET=utf-8

相关内容