Внешние символы превращаются в мусор в mysql

Я нахожусь в США. У меня есть следующая строка в моей веб-странице:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

И моя таблица MYSQL является MyISAM latin1_swedish_ci

Но когда кто-то заполняет форму с внешним символом, это хранится в MySql как мусор. Примером был бы e с диакритическим знаком по нему, и т.д. - что-то не обычно используемое на американском варианте английского языка. Даже если кто-то использует странный апостроф, становящийся превращенным мусор:

национальный

превращен:

nation†™s

Я использую регулярный апостроф там, но Вы получаете идею. Внешние символы превращаются в 3 посторонних символа. Помогите! TIA

5
задан Paul Tomblin 25 February 2010 в 16:02
поделиться

3 ответа

Либо измените заголовок документа на

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

или - лучше - измените набор символов в таблицах на UTF-8. Сделать это не совсем тривиально, простое изменение collation таблиц не поможет. Этот вопрос на SO может дать некоторые подсказки.

7
ответ дан 14 December 2019 в 08:48
поделиться

Я помню такой же случай в SQlServer, надеюсь, это поможет в этом вопросе.

В нем есть два типа данных varchar [8 бит] и NVarChar [16 бит].

Теперь, используя varchar, вы не можете хранить 16-битные символы, такие как китайский, индийский и т.д., вам нужно использовать NVarchar, т.е. тип данных, который может хранить 16-битные символы.

0
ответ дан 14 December 2019 в 08:48
поделиться

Мне кажется, что в базу данных вводятся данные utf8. Чтобы поместить это в таблицу, он должен быть преобразован в latin1 (поскольку это набор символов вашего столбца), и это может дать от одного до трех символов latin1.

Пекка меня опередил - его решение должно сработать, чтобы решить эту проблему.

0
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: