gpt4 book ai didi

ubuntu - 为什么俄语字符显示不正确?

转载 作者:行者123 更新时间:2023-12-04 18:44:46 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to convert Unicode Escape Sequence to Unicode String in Haskell

(1 个回答)


3年前关闭。




当我运行程序时,我看到以下内容:

λ ashot Weather → λ git master* → stack exec Weather-exe
Пожалуйста, укажите дату для прогноза в формате ГГГГ-ММ-ДД:
2018-11-07
Пожалуйста, укажите один из этих марзов: [Aragatsotn,Ararat,Armavir,Dilijan,Gegharkunik,Gyumri,Kotayk,Shirak,Syunik,Vanadzor,Yerevan]
Yerevan

一切正常。
但是当我输入错误时,我明白了:
InvalidDate "\1058\1077\1082\1089\1090, \1082\1086\1090\1086\1088\1099\1081 \1074\1099 \1074\1074\1077\1083\1080 - \1101\1090\1086 \1082\1072\1082\1072\1103-\1090\1086 \1073\1077\1083\1080\1073\1077\1088\1076\1072!"
但不是这些数字 1072/1052 ...我应该收到俄文文本。
如何解决此问题以便正确显示俄语字符?

最佳答案

您可能正在调用 show在弦上。这也可能隐含地发生,例如通过 print ,或者通过要求 GHCi 打印一个字符串。

考虑这个 GHCi session :

> str = "Пожалуйста"                                           
> str
"\1055\1086\1078\1072\1083\1091\1081\1089\1090\1072"

变量 str包含正确的字符串。当我们要求 GHCi 打印它时,它会调用 print str隐式调用 show .
show反过来,将字符串转换为 ASCII 转义形式,将所有不可打印的字符转换为转义序列。

我强调字符串 str确实是预期的字符串:如果我们使用 putStrLn,我们可以正确打印它, 例如:
> putStrLn str
Пожалуйста

请注意,如果您调用 show在包含 String 的数据类型上内部(例如,在 InvalidDate 这样的构造函数内部),然后依次调用 show在字符串上,产生不需要的转义。

我建议为您的类型编写一个自定义的 pretty-print 并使用它,这样字符串就不会被这种转义破坏。

关于ubuntu - 为什么俄语字符显示不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53196301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com