【问题标题】:MySQL script not executing properly through pythonMySQL脚本无法通过python正确执行
【发布时间】:2017-11-11 00:11:48
【问题描述】:

原始数据:

帐户 第1234章

通过手动执行脚本在 MySQL 中运行它,然后使用 Python shell 执行脚本:

SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(Account,':',-1),' � ',-1) as Description,
SUBSTRING_INDEX(SUBSTRING_INDEX(Account,':',-1),' � ',1) as Acct_Number
FROM table1

MySQL 输出(正确的一个)

Acct_Number    Description
1234             Rent

Python 输出(不正确)

Acct_Number    Description
1234           1234 � Rent

有没有办法让 python 读取这个奇怪的�字符?已成功使用 Python 对包含 - 而不是这个 � 字符的类似 Account 数据(也使用子字符串索引)运行脚本,并且运行良好。

如果这个角色没有出现在这篇文章中,这里是我所指的链接:https://apps.timwhitlock.info/unicode/inspect?s=%EF%BF%BD

【问题讨论】:

  • 如果您发布一些您尝试过的代码,人们会更容易帮助您。你在 python 中使用了什么代码,哪个变量向你显示了那个特殊字符?

标签: python mysql unicode substring


【解决方案1】:

“黑钻”的成因见Trouble with UTF-8 characters; what I see is not what I stored。

有关在 Python 和 MySQL 中使用 UTF-8 的提示,另请参阅 http://mysql.rjweb.org/doc.php/charcoll#python。

找到实际存储的十六进制可能很重要 - 以确定问题出现在 INSERT 上还是显示上。

正如您所指出的,十六进制 EFBFBD 代表黑色菱形——这意味着问题是在事物的“存储”方面引起的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多