Форматирование командной строки MySQL с помощью UTF8
у меня есть таблица базы данных, которая содержит шведские/норвежские строки.
когда я запрашиваю некоторые данные, я получаю вывод следующим образом:
выход с set names latin1;
+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interi##### |
| Bwg Homes |
| If Skadef####kring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
теперь, если я set names utf8;
чтобы увидеть символы с их правильной кодировкой, затем форматирование табличного вывода командной строки MySQL прерывается.
выход с set names utf8;
+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interiør |
| Bwg Homes |
| If Skadeförsäkring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
вопрос:
Это не большая проблема, но это делает вывод немного сложнее читать. Кто-нибудь знает, как сохранить табличное форматирование нетронутым?
2 ответа:
запустите клиент с опцией
--default-character-set=utf8
.mysql --default-character-set=utf8
это заставляет
character_set_client
,character_set_connection
иcharacter_set_results
переменные в utf8.дополнительная информация о наборе символов соединения здесь.
вы можете установить его в качестве параметра по умолчанию в вашем , в
[mysql]
раздел, который будет включаться автоматически при каждом вызове клиента mysql.[mysql] default-character-set=utf8
эти слова "ø ö ä" с utf8 занимает 2 байта, так что вы забыли использовать строку wchar или utf?
вот мой тестовый код на python:
s = ["Kid Interiør","Bwg Homes","If Skadeförsäkring"] for w in s: print '|',w.ljust(20,' '),'|'
результат такой же, как и ваша программа распечатать. все, что мне нужно сделать, это изменить кодировку строки
s
:s = [u"Kid Interiør",u"Bwg Homes",u"If Skadeförsäkring"] for w in s: print '|',w.ljust(20,' '),'|'
результат
| Kid Interiør | | Bwg Homes | | If Skadeförsäkring |
Я не тестировал в c++, но я предлагаю вам использовать wchar, std::wcout.