2015-04-04 81 views
0

我试图使用mysql.connector模块将表添加到表中。这些行是从txt文件中读取的。问题在于,例如“č”或“ľ”的标志显示为“?”。在PhpMyAdmin。我试图将数据库编码设置为utf-8 bin,使用PhpMyAdmin中的operations按钮。该文件根据notepad++编码为utf-8。我应该怎么做才能解决它?错误编码 - PhpMyAdmin/MySql

这里一块代码的地方插入到数据库:

with open('file') as f: 
    for line in f: 
     splitted = line.split('*') 
     splitted = ["\'{0}\'".format(element) for element in splitted] 
     insert = ', '.join(splitted) 

     try: 

      cursor.execute(""" 
       INSERT INTO table_data VALUES(DEFAULT,%s) 
      """%(insert)) 

      cnx.commit() 
     except: 
      print 'ERROR' 
cnx.close() 

enter image description here

WAMP - MySQL的控制台 - SELECT * FROM表件: enter image description here

+0

当您在mysql(命令行)中查询数据时,数据看起来像什么? – 2015-04-04 17:28:59

+0

我试过了,它是一样的,我已经上传了SELECT * FROM表的图片。我该怎么办?谢谢 – 2015-04-04 17:46:29

+0

检查MySQL数据库的字符集以查看它是否可以存储?在“Ra?ianska”中。最简单的方法是再次使用mysql CLI并执行直接插入“insert into yourtable(col)VALUES(”Ra?ianska“);”(用你的真实角色替换?)。 – 2015-04-04 17:51:54

回答

1

你需要UTF8无处不在。 utf8字节在你的客户端告诉mysql你的客户端有utf8字节,CHARACTER SET utf8在列上,在网页上等

在你的屏幕截图中,你会看到一些重音字符正确地通过,有些不是。请提供在职/非在职人员名单。 (每一个都足够了。)你想要处理什么语言?

由于某些字符变成'?',可能原因的数量有所限制。

请提供SHOW CREATE TABLE有问题的表格。

请为SELECT col, HEX(col)...提供一些麻烦的细胞。如果在十六进制中说3F应该有重音字母,那么问题出现在输入上,并且数据不可恢复。

如果问题在输入,我会猜想你有非latin1字节进入latin1列。一旦我们“修复”输入,我们就可以处理输出。

获得'控制台'显示utf8字符:命令“chcp”控制“代码页”。 chcp 65001提供了utf8,但它也需要安装一个特殊的字符集。要在控制台窗口中设置字体:右键单击窗口标题→属性→字体→选择Lucida控制台

My charset blog讨论这些问题和更多。