【问题标题】:Symbol issue in PythonPython中的符号问题
【发布时间】:2020-09-09 05:33:24
【问题描述】:

我对使用 Python 的符号有疑问。 我使用 teradatasql 扩展将 Teradata 连接到 Python。 在我的表格中,我有一些带有“€”符号的文本,但是当我从该表格中提取数据时,该符号没有出现。 有什么建议吗?

with teradatasql.connect([my connexion]) as con:
    with con.cursor() as cur:
        for table in list:
            cur.execute("select * from mydb."+table+";")
            for row in cur.fetchall():
                [HERE I PRINT THE DATA]

【问题讨论】:

  • 可能是编码问题。最简单的方法是确保在任何地方都使用 UTF-8。
  • 我的数据库是 UTF-8,我写入数据的文件也是 UTF-8 编码的 sqlFile = open("INSERT TABLE "+table, "w", newline="", encoding ="utf-8")
  • 您的终端是否将 Python 代码的输出解码为 UTF-8?
  • @chepner 我正在使用 Visual Studio Code,如何检查?
  • 你试过在终端或cmd中运行吗?

标签: python teradata


【解决方案1】:

teradatasql 驱动程序始终使用 UTF8 会话字符集,但您必须正确配置控制台窗口才能显示 Unicode 字符。

使用 Windows 命令提示符。按 Alt+Space 打开窗口菜单。从菜单中选择属性项。在字体选项卡上,将窗口字体设置为 SimSun-ExtB。

需要该字体才能显示所有 Unicode 字符。

执行命令:chcp 65001

这会将控制台窗口更改为 UTF-8 代码页,这将使 Python 能够将 Unicode 字符打印到控制台窗口。

最后,运行您的 Python 脚本,该脚本使用 teradatasql 驱动程序执行查询。应正确打印包含 Unicode 字符的查询结果。

【讨论】:

  • 如果我想将数据写入文件怎么办?我正在使用 VSCode 运行我的 pyhton
【解决方案2】:

使用 UTF-8 编码将 UTF-8 数据写入文件:

import io
with io.open('euro.txt', 'w', encoding='utf8') as f:
    f.write('\u20ac\n')

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2011-02-06
    相关资源
    最近更新 更多