setopt rcquotes
zsh -c 'export LANG="ru_RU.CP1251"; echo "Русский текст" | iconv -f utf8 | perl -p -i -e ''BEGIN{use open ":locale"}s/\p{InCyrillic}/й/g'''
给了我一堆错误:
"\x{00d0}" does not map to cp1251, <> line 1.
"\x{00b9}" does not map to cp1251, <> line 1.
为了避免出现此错误,应该采取哪些措施(请注意,语言环境可能是任何错误)。
答案 0 :(得分:3)
您忘记表示替换文本的编码。 更新:在第一个版本中,我有一个涉及讨厌的encoding
编译指示的解决方案。它可以完全避免,但由于某种原因,直到现在才出现以下标准方式。
bash> export LANG=ru_RU.koi8r # I do not have CP…
bash> echo "Русский текст" | iconv -f UTF-8 | hex
0000 f2 d5 d3 d3 cb c9 ca 20 d4 c5 cb d3 d4 0a ������� �����.
bash> echo "Русский текст" | iconv -f UTF-8 | perl -p -i -e'BEGIN {use open ":locale"}; use utf8; s/\p{InCyrillic}/й/g' | hex
0000 ca ca ca ca ca ca ca 20 ca ca ca ca ca 0a ������� �����.
bash> echo "Русский текст" | iconv -f UTF-8 | perl -p -i -e'BEGIN {use open ":locale"}; use utf8; s/\p{InCyrillic}/й/g' | iconv -t UTF-8
ййййййй ййййй