Проблемы кодирования / декодирования / вставки символов с французским акцентом - PullRequest
0 голосов
/ 17 января 2011

Я пытаюсь записать в базу данных следующую строку:

эффект муара решетки при печати. ​​

Символ 'é' вызывает у меня сильную головную боль.Я не могу использовать htmlentities, потому что база данных является частью настольного приложения.Мой HTML-код - UTF-8.

Во время моей (5 дней и считая) попытки отладить эту проблему, я вставил эту же строку в базу данных с помощью приложения для настольного компьютера, которое, казалось, работало нормально, за исключением того, что оскорбительный символотображается как '?'- даже используя htmlentities или utf8_encode.

Это сообщения об ошибках, которые я получаю при попытке вставить строку:

Предупреждение : PDOStatement :: execute() [pdostatement.execute]: message: Незакрытая кавычка перед строкой символов 'решетка динамика'.(уровень серьезности 15)

Предупреждение : PDOStatement :: execute () [pdostatement.execute]: общая ошибка SQL Server: проверка сообщений от SQL Server (уровень 15)

Предупреждение : PDOStatement :: execute () [pdostatement.execute]: сообщение: строка 1: неверный синтаксис рядом с «муар решетки динамика».(уровень серьезности 15)

Пожалуйста, помогите!

Обновление (2011-01-18)

Видимо, кодировка символов базы данных SQL_Latin1_General_CP1_CI_AS.Является ли это SQL Server эквивалентом ISO-8859-1?Разве ISO-8859-1 не является кодировкой символов по умолчанию PHP по умолчанию?

Обновление 2 (2011-01-18)

Так близко! Включаяcharset=UTF-8 в строке DSN позволил мне вставить символ 'é', и он правильно отображается в настольном приложении.Это все еще отображается как «?»на веб-странице, хотя я использую $text_block = htmlentities( $text_block, ENT_NOQUOTES, 'UTF-8' ); в функции предварительного форматирования.

Ответы [ 2 ]

1 голос
/ 18 января 2011

Обязательно правильно передайте динамические строки, используя привязки PDO, чтобы они правильно экранировались.

Также убедитесь, что ваше соединение с базой данных также находится в кодировке UTF-8.

Ваши собрания в базе данныхПоля / также должны быть установлены в UTF-8, однако, если они не совпадают, это, вероятно, не вызовет ошибки такого рода.

0 голосов
/ 18 января 2011

Вы пытались использовать в базе данных тип данных NVARCHAR с чувствительным к ударению сопоставлением?Сделайте следующий тест в вашей БД и сообщите нам, работает ли он:

- эффект муара решетки динамика при печати.если object_id ('tempdb.dbo. # test') не равен NULL отбрасыватьэффект при печати. ​​'

выберите * из # теста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...