有谁知道为什么图标保存 cygwin 上的重音符号吗?如果是的话,我该如何告诉它不要这样做。
[Nifle@cygwin ~]$ echo "ÅÄÖÕŨÉÁ" | iconv -f utf-8 -t ascii//TRANSLIT
A"A"O~O~U'E'A
我希望它像在我的 Linux 服务器上一样运行
[NIfle@linux ~]$ echo "ÅÄÖÕŨÉÁ" | iconv -f utf-8 -t ascii//TRANSLIT
AAOOUEA
答案1
旧问题:
阅读 Kobylkin 对这个主题的评论...
https://sourceware.org/bugzilla/show_bug.cgi?id=2872#c2
还
http://www.yqcomputer.com/422_10096_1.htm
请记住,Cygwin <1.7 没有语言环境。
但在你的情况下,本地似乎被很好地解释;Cygwin 上的 iconvTransliteration
进程决定将一个字符转换为两个(或更多)组件而不是一个;在您的示例中,您将获得音译字符本身加上音译字符修饰符(重音符号、分音符、波浪号、点等)(如果存在)。
Å Ä Ö Õ Ũ É Á
A "A "O ~O ~U 'E 'A
Transliteration:
When a character cannot be represented in the target character set,
it can be approximated through one or several similarly looking characters
(https://www.gnu.org/software/libiconv/)
你可以看到libiconv.dll
翻译文件显示在“make”过程中创建的音译表 (translit.h) 的源代码。该表表明 Cygwin 所做的实际上是正确的。
答案2
Cygwin 的 iconv 实现所使用的转换表与您的 Linux 服务器上的不同。
如果您将 Cygwin 的区域设置更改为 Linux 服务器的区域设置,您应该会得到相同的转换结果。
答案3
Cygwin 可能没有使用 UTF-8,因此尝试将一个双字节 UTF-8 字符显示为两个单字节 ASCII 字符。
请执行下列操作:
- 前往菜单(如果您没有看到任何菜单,请右键单击您的终端)。
- 点击选项...。
- 点击文本。
- 放区域设置和字符集
由于我没有安装 Cygwin,所以我无法判断正确的值是什么。
另请参阅 Cygwin 文章国际化 - 设置区域设置。