Asp.net отображает строку с неправильной кодировкой, а PHP - нет (MySQL) - PullRequest
1 голос
/ 20 мая 2010

Я взял старое php-приложение с MySQL в качестве базы данных. Внутри базы данных есть таблицы, содержащие контент с локализованными строками (поэтому содержащие специальные символы)

В настоящее время существует приложение PHP, которое обращается к этой базе данных. Моя работа заключается в создании приложения ASP.net (C # codebehind), которое также обращается к этим строкам. Это работает, насколько кодирование идет.

Если я пытаюсь получить доступ к этим строкам, у меня возникает какая-то проблема с кодировкой, такая как 'ndern' и 'Prüfzeichen', но только в приложении ASP.net. PHP-приложение устанавливает utf-8 в качестве charset, и строки отлично отображаются. В приложении ASP.net это бред, независимо от кодировки страницы.

В базе данных MySQL кодировка для указанной таблицы 'translations' установлена ​​на 'latin --cp1252 West European', а сопоставление на 'latin_swedish_ci'.

Я не могу понять, что, по-видимому, делает PHP, а ASP.net - нет. Я проследил код php и не смог найти никаких признаков специальной кодировки при получении строки из базы данных.

Вопрос в том, как обеспечить правильную кодировку внутри приложения ASP.net без изменения базы данных, поскольку большие изменения в коде php невозможны?

У кого-нибудь есть подсказка?

Ответы [ 3 ]

2 голосов
/ 20 мая 2010

Лучшим долгосрочным решением было бы преобразование таблицы в кодировку UTF-8:

ALTER TABLE translations CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Если данные уже в формате utf-8 (даже если набор символов латинский1), вам необходимо преобразовать каждый столбец в правильную кодировку.

Преобразует столбец, определенный как latin1, но содержащий utf8, в столбец, объявленный как и содержащий utf8:

ALTER TABLE translations CHANGE columnNameHere columnNameHere BLOB;
ALTER TABLE translations CHANGE columnNameHere columnNameHere TEXT CHARACTER SET utf8;
1 голос
/ 20 мая 2010

Кажется, я не могу понять, что делает PHP,

Приложение PHP устанавливает utf-8 в качестве charset. Для подключения к базе данных. С SET NAMES <encoding> запросом. Где <encoding> - это ваши страницы, кодирующие

0 голосов
/ 29 июня 2010

Если наконец удалось найти способ конвертировать в UTF8.

System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetBytes("convert me"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...