sql server — чтение специальных символов из латиницы 1 в базе данных Microsoft SQL с переполнением стека

У меня есть предопределенная база данных Microsoft SQL. Сортировка базы данных указывается как SQL_Latin1_General_CP1_CI_AS.

Версия базы данных: SQL Server Express 10.0.1600.22

Некоторые таблицы имеют значения со специальными символами (я полагаю, UTF-8). Я читаю эти таблицы с помощью php mssql, и я получаю знаки вопроса в выводе ????? ???? ?????

Я пытался играть с ini_set('mssql.charset','utf8')с разными значениями кодирования, такими как windows-cp1251, windows-cp1252 без удачи

Я не уверен, как поступить с этим? Я думаю, что мне нужен эквивалент MySQL SET NAMES UTF-8, но я не уверен, как это сделать в MSSQL. Есть идеи?

Преобразование таблиц в utf8, к сожалению, не вариант. Тип поля nvarchar (250)

0

Решение

Здесь много недостающей информации; например, тип поля в базе данных (varchar, nvarchar ???).

Попробуйте преобразовать ваше поле в поле Unicode, если оно хранится как поле varchar; например:

Выберите приведение (field1 как nvarchar (200)) как field1, …

Кроме того, даже если в качестве параметров сортировки базы данных используется SQL_Latin1_General_CP1_CI_AS, каждое поле может иметь свой собственный конкретный порядок сортировки. Сортировка базы данных — это, в основном, сортировка по умолчанию, которая используется, когда вы не указываете сортировку для поля.

0

Другие решения

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

<html>...<p>é</p>...

Конечно, если нет необходимости пытаться с такими объектами HTML, как &eacute; за выполнение этих тестов, потому что проблема не в этом; Вы должны использовать реальные закодированные расширенные символы.

После этого вы можете проверить, правильно ли хранятся ваши расширенные символы в вашей базе данных, проверив их числовые значения с помощью функции. Unicode(). Вы также можете проверить, что вы можете написать расширенный символ, используя NChar() функция; например:

Select Unicode (substring (field1, 1, 1)), Unicode (N'é'), NChar(233), ...

Функции Unicode () и NChar () являются стандартными функциями Microsoft SQL.

Прошло много лет с тех пор, как я в последний раз кодировал PHP, однако, насколько я помню, значения конфигурации по умолчанию было достаточно для отображения любых расширенных символов, поступающих из базы данных SQL-Server, с использованием поля nvarchar или ntext.

0

Используйте параметр подключения: «CharacterSet» => «UTF-8», как указано в https://msdn.microsoft.com/en-us/library/cc626307(v=sql.105).aspx

Это сработало для меня. Дальнейшее преобразование не требуется.

0
По вопросам рекламы [email protected]