cygwin 上的 iconv 保存了重音符号

cygwin 上的 iconv 保存了重音符号

有谁知道为什么图标保存 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 字符。

请执行下列操作:

  1. 前往菜单(如果您没有看到任何菜单,请右键单击您的终端)。
  2. 点击选项...
  3. 点击文本
  4. 区域设置字符集

由于我没有安装 Cygwin,所以我无法判断正确的值是什么。

另请参阅 Cygwin 文章国际化 - 设置区域设置

相关内容