【问题标题】:Python3 issue with unicodeunicode 的 Python3 问题
【发布时间】:2020-04-24 17:10:31
【问题描述】:

我似乎无法在生产服务器上获得 utf-8 字符的 unicode 表示,尽管它在开发工作站上运行良好。

当我在 linux(Ubuntu 服务器)上使用 Python 3.6.9 [GCC 8.3.0] 时。

>>> str('\u0394')
'\u0394'

>>>print('\u0394')               
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'latin-1' codec can't encode character '\u0394' in position 0: ordinal not in range(256)

当我在 darwin (Mac OS) 上使用 Python 3.6.5 [GCC 4.2.1] 时

>>> str('\u0394')
'Δ'

>>> print('\u0394') 
Δ

从表面上看,我会说 ubuntu 服务器上有一些问题,因为 str() 应该在 Python 3 中转换为 unicode。但是,很可能是版本 3.6 中的工作方式有所不同。 9 w.r.t. 3.6.5。关于我如何深入了解这一点的任何提示?

【问题讨论】:

  • 您缺少一个字符集来显示您想要的字符。这是配置您的 Ubuntu 系统和/或安装您需要的字符集的问题 - 更有可能只是安装 ttf 字体包将修复它。也许这会有所帮助:askubuntu.com/questions/689607/…
  • str('\u0394') 和 '\u0394' 完全一样。您的 查看器(终端)无法显示 Unicode 字符,仅支持 Latin1 字符集。
  • 安装 ttf 字体没有帮助,但是您对 ubuntu 中字符集的评论使我得到了如下所述的修复。谢谢@Todd!
  • 太棒了。很高兴你找到了解决办法。别客气。也许对问题标题的更新将帮助其他人找到在他们的 Ubuntu 发行版上遇到此问题的人。

标签: python-3.x ubuntu


【解决方案1】:

here 中所述,我找到了修改语言环境以匹配.UTF-8 的修复:

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

以前/etc/default/locale 只有en_US。我也在语言环境文件中对其进行了更改,但是由于我目前无法重新启动,所以上面的命令对我来说是最好的解决方法。

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2011-02-21
    • 2010-09-16
    • 1970-01-01
    • 2010-12-26
    相关资源
    最近更新 更多