我在跑乌尔希使用当前环境:
$ env | grep LC LC_ALL=en_US.UTF-8
问题出在 ncurses 或 ncmpc 上,我想知道是否有人可以解释一下问题可能是什么。这也可能是ID3标签以及任何有关处理 mp3 文件中元标签中损坏或配置错误的编码设置的建议也欢迎。多年来我一直忽略这个问题,现在终于让我感到困扰了。奇怪的是,有些文件名或标签有效,而其他的则无效。
我已尝试以下操作:
将 LC_ALL 设置为这些值(空格之前的值)
- ru_RU.KOI8-R KOI8-R
- ru_RU.UTF-8 UTF-8
- ru_RU ISO-8859-5
- ru_RU.KOI8-R KOI8-R
使用以下方法重建 MPD 数据库
- id3v1_encoding“ISO-8859-1”
或者 - id3v1_encoding“UTF-8”
- id3v1_encoding“ISO-8859-1”
我可以用两个屏幕截图来演示这个问题,因为这是最简单的方法:
预期输出(mpc 运行良好):
编码损坏(ncmpc):
Ncmpcpp:同样问题
答案1
从第二张截图来看,它ncmpcpp
输出的是有效的 UTF-8,但是你的终端并不期望如此。
找出你的终端仿真器的 PID,然后运行
猫/proc/<进程ID>/environ | tr \\0 \\n | egrep "LANG|LC"
如果它显示的内容与当前语言环境不同,那么您可能在错误的位置设置了 $LANG/$LC_ALL。例如,.bashrc
它将不起作用,因为它不适用于 X11 会话,只适用于程序里面一个终端——.profile
或者.xprofile
更好。
事实上,不建议永久设置 $LC_ALL - 只需LANG=en_US.UTF-8
足够即可。(尽量避免 ISO-8859 或 KOI8-R 设置。)