2015-04-04 5 views
0

Я пытаюсь добавить строки в таблицу с помощью модуля mysql.connector. Эти строки считываются из txt-файла. Проблема в том, что, например, 'č' или 'ľ'sign видны как'? ' в PhpMyAdmin. Я попытался установить кодировку базы данных на utf-8 bin, используя operations кнопку в PhpMyAdmin. Файл соответствует 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 (командной строке)? –

+0

Я пробовал, и это то же самое, я загрузил фотографию SELECT * FROM table вверх. Что мне делать? Thanks –

+0

Проверьте набор символов базы данных MySQL, чтобы узнать, может ли он хранить? в «Ra? ianska». Самый простой способ сделать это - снова использовать CLI mysql и выполнить прямую вставку «INSERT INTO yourtable (col) VALUES (« Ra? Ianska »)» (замените своим реальным персонажем). –

ответ

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 обсуждает эти проблемы и многое другое.

Смежные вопросы