Описание хранения данных в кодировке UTF-8 в SQL Server

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:232580
Аннотация
Некоторые приложения (особенно тех, которые являются веб) приходится иметь дело с данными в Юникоде, закодированные с помощью метода кодировки UTF-8. SQL Server 7.0 и SQL Server 2000 используйте другую кодировку Юникод (UCS-2) и распознает допустимых символов UTF-8. В этой статье обсуждаются некоторые возможности в этом случае.
Дополнительная информация
Данные Юникод могут быть кодированы различными способами. UCS-2 и UTF-8, два стандартных способа хранения битовые шаблоны, представляющие символы Юникода. Microsoft Windows NT, SQL Server, Java, COM и драйвер ODBC для SQL Server и поставщик OLEDB для всех внутренних представляют данные в Юникоде как UCS-2.

Параметры для использования SQL Server 7.0 или SQL Server 2000 как сервер базы данных для приложения, которое отправляет и получает данные в кодировке Юникод, в кодировке UTF-8:
  1. Если приложение использует Active Server Pages (ASP) и с помощью Internet Information Server (IIS) версии 5.0 и Windows 2000, можно добавить сценарий ASP на сервере «< % Session.Codepage=65001% >». Это указывает, что службы IIS для преобразования всех динамически создаваемых строк (пример: Response.Write) из UCS-2, UTF-8, автоматически перед их отправкой клиенту.

    Если не хотите включить сеансы, также можно использовать директиву на сервере "< % @ CodePage = 65001% >".

    Все данные UTF-8, отправляемых от клиента к серверу через GET или POST также преобразуются в UCS-2 автоматически. Свойство Session.Codepage является рекомендуемым методом для обработки данных UTF-8 в рамках веб-приложения. Этот параметр кодовая страница недоступна на сервере IIS 4.0 и Windows NT 4.0. Для получения дополнительных сведений обратитесь к следующей статье Microsoft Knowledge Base:
    254313 Появляется сообщение об ошибке Ошибка страницы активного сервера «ASP 0203» недопустимый код
  2. Перевод в и из UCS-2 или UTF-8 соответственно в приложении. Пример кода для преобразования такого типа расположен на веб-узел консорциума Юникода:

    Подробное описание алгоритма для преобразования UCS-2 в кодировке UTF-8 можно найти в документе Request Интернета для комментариев RFC2279.

    В Windows NT или Windows 2000 можно использовать функции Win32 MultiByteToWideChar и WideCharToMultiByte для преобразования UTF-8 в UCS-2, передав константой CP_UTF8 (65001) как первый параметр функции.
  3. Изменение приложения для использования UCS-2 вместо кодировки UTF-8.
  4. Хранить на сервере, используя столбцы VARBINARY-двоичный ФАЙЛ-образ фактические данные UTF-8. Хранение данных в кодировке UTF-8 на SQL Server означает, что SQL Server нельзя использовать для сортировки и поиска диапазонов значений, таких как, если данные были допустимыми символьных данных. Типы операций на столбцы, содержащие данные UTF-8, который не возвращал ожидаемые результаты включают "ORDER BY», больше-чем" > "и меньше-чем"<" comparisons,="" and="" the="" built-in="" sql="" server="" string="" manipulation="" functions="" such="" as=""></">

    Однако сравнения на равенство, будет работать до тех пор, пока на уровне байтов сравниваемые строки эквивалентны. Обратите внимание, что при хранении данных в кодировке UTF-8 в SQL Server не следует использовать, символьных столбцов (CHAR, NCHAR/VARCHAR и т. д.). UTF-8 не является допустимым символом данных для SQL Server, а также путем хранения несимвольных данных в символьных столбцов, существует риск при возникновении проблем, таких как вопросы, описанные в следующих статьях базы знаний Майкрософт:
    155723 INF: SQL Server усечение строкового DBCS
    234748 PRB: Драйвер ODBC для SQL Server преобразует события языка в Юникод
    Если вы собираетесь этого параметра следует помнить, что при необходимости доступа к данным UTF-8, хранящиеся в SQL Server из любого приложения, отличного от веб-обозревателя (например, из приложения ODBC веб интерфейсом) требуется для выполнения преобразования из UTF-8 в UCS-2 в рамках этого приложения ODBC, OLEDB, COM, вызовы Win32 API, VB и времени выполнения c строками функции не работают с данными UTF-8. Оно перемещает бремя перевод в другое приложение.
  5. Если требования к не нужно хранить данные на основе сочетания языков, которые не могут быть удовлетворены одной кодовой страницы, не требуется использовать Юникод.
Поддержка Юникода была введена в SQL Server, начиная с SQL Server 7.0. Поскольку SQL Server 6.5 не поддерживает хранение данных в формате Юникод, параметры только для SQL Server 6.5 описаны в шаги 4 и 5.
Международные UTF8 UCS2 UTF16 UTF-16

Внимание! Эта статья переведена автоматически

Vlastnosti

ID článku: 232580 – Posledná kontrola: 06/04/2011 21:06:00 – Revízia: 4.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 6.5 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbinfo kbmt KB232580 KbMtru
Pripomienky