使用 ASCII//IGNORE//TRANSLIT 将 UTF-8 希腊字母转换为 ASCII
Converting a UTF-8 greek letters to ASCII using ASCII//IGNORE//TRANSLIT
我正在使用 Linux 终端
echo -n "ΒΓΔΕΖΗΘΙΚΛΜΝΞΠΡΣΤΥΦΧΨΩ" | iconv -f utf-8 -t ASCII//IGNORE//TRANSLIT
但错误:非法序列。
预期结果:α=A,Γ=G,Δ=D,ε=E,Λ=L,等等
PS: similar to PHP's problem here 但终端不接受 utf8。
首先应该是echo -n "ΒΓΔΕΖΗΘΙΚΛΜΝΞΠΡΣΤΥΦΧΨΩ"|iconv -f UTF-8 -t ASCII//TRANSLIT
。注意大写的 UTF-8 而不是 IGNORE。
其次,glibc 中直到最近才缺少希腊音译 table。 (iconv 是 glibc 的一部分)[1]
如果那个错误仍然影响你应该有 ??????????????作为输出给出,但没有错误。
无论如何,它已为 2020-02-01 发布的 glibc 2.31 修复 [2]
如果在新的 glibc 进入您的发行版之前您确实需要它,您可以修补 glibc/locale/C-translit。h.in 并重新编译。
[1] https://sourceware.org/bugzilla/show_bug.cgi?id=12031
[2] https://sourceware.org/legacy-ml/libc-announce/2020/msg00001.html
注意事项
- UBUNTU 和许多其他 Linux 使用
- 在 UBUNTU 你可以用命令
ldd --version
或 dpkg -l libc6
检查版本
我正在使用 Linux 终端
echo -n "ΒΓΔΕΖΗΘΙΚΛΜΝΞΠΡΣΤΥΦΧΨΩ" | iconv -f utf-8 -t ASCII//IGNORE//TRANSLIT
但错误:非法序列。
预期结果:α=A,Γ=G,Δ=D,ε=E,Λ=L,等等
PS: similar to PHP's problem here 但终端不接受 utf8。
首先应该是echo -n "ΒΓΔΕΖΗΘΙΚΛΜΝΞΠΡΣΤΥΦΧΨΩ"|iconv -f UTF-8 -t ASCII//TRANSLIT
。注意大写的 UTF-8 而不是 IGNORE。
其次,glibc 中直到最近才缺少希腊音译 table。 (iconv 是 glibc 的一部分)[1]
如果那个错误仍然影响你应该有 ??????????????作为输出给出,但没有错误。
无论如何,它已为 2020-02-01 发布的 glibc 2.31 修复 [2]
如果在新的 glibc 进入您的发行版之前您确实需要它,您可以修补 glibc/locale/C-translit。h.in 并重新编译。
[1] https://sourceware.org/bugzilla/show_bug.cgi?id=12031
[2] https://sourceware.org/legacy-ml/libc-announce/2020/msg00001.html
注意事项
- UBUNTU 和许多其他 Linux 使用
- 在 UBUNTU 你可以用命令
ldd --version
或dpkg -l libc6
检查版本