Descripción de almacenamiento de datos UTF-8 en SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 232580 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Algunas aplicaciones (especialmente aquellas que están basadas en Web) deben tratar con datos Unicode que se codificación con el método de codificación UTF-8. SQL Server 7.0 y SQL Server 2000 utilizan una codificación distinta de Unicode (UCS-2) y que no reconocen UTF-8 como datos de carácter válido. En este artículo se describe algunas opciones para tratar esta situación.

Más información

Los Datos Unicode se pueden codificar de muchas maneras diferentes. UCS-2 y UTF-8 son dos formas comunes para almacenar los patrones de bits que representan los caracteres Unicode. Microsoft Windows NT, SQL Server, Java, COM y el controlador ODBC de SQL Server y proveedor OLEDB de todas las representan internamente los datos Unicode como UCS-2.

Las opciones para el uso de SQL Server 7.0 o SQL Server 2000 como servidor de back-end para una aplicación que envía y recibe datos de Unicode se codifican como UTF-8 se incluyen:
  1. Si la aplicación utiliza páginas Active Server (ASP) y está utilizando Internet Information Server (IIS) 5.0 y Microsoft Windows 2000, puede agregar "< % Session.Codepage=65001% >" a la secuencia de comandos ASP del servidor. Esto indica a IIS para convertir todas las cadenas generadas dinámicamente (ejemplo: Response.Write) entre UCS-2 y UTF-8 automáticamente antes de enviarlos al cliente.

    Si no desea activar las sesiones, o bien puede utilizar la directiva del servidor "< % @ CodePage = % 65001 >".

    Todos los datos UTF-8 enviados desde el cliente al servidor a través de GET o POST también se convierten automáticamente en UCS-2. La propiedad Session.Codepage es el método recomendado para controlar los datos de UTF-8 en una aplicación web. Esta configuración de página de códigos no está disponible en IIS 4.0 y Windows NT 4.0. Para obtener información adicional, consulte el artículo siguiente en Microsoft Knowledge Base:
    254313 Un mensaje de error: Páginas Active Server Error ' ASP 0203' código no válido
  2. Traducir desde y a UCS-2 o UTF-8 como desee dentro de la aplicación. Código de ejemplo para este tipo de conversión se encuentra en el sitio del Consorcio Unicode:

    FTP://FTP.Unicode.org/Public/PROGRAMS/CVTUTF/
    Una descripción detallada del algoritmo para convertir UCS-2 en UTF-8 puede encontrarse en el documento de Internet Request For Comments RFC2279.

    En Windows NT o Windows 2000, puede utilizar las funciones de Win32 MultiByteToWideChar y WideCharToMultiByte para convertir UTF-8 en UCS-2 y pasando la constante CP_UTF8 (65001) como primer parámetro a las funciones.
  3. Modificar la aplicación para que utilice UCS-2 en lugar de codificación UTF-8.
  4. Almacenar los datos reales de UTF-8 en el servidor utilizando las columnas BINARY, VARBINARY, imagen. El almacenamiento de datos UTF-8 en SQL Server significa que no se puede utilizar SQL Server para ordenar o buscar intervalos de estos valores como si fueran de los datos de los datos de caracteres válidos. Los tipos de operaciones en las columnas que contienen datos UTF-8 que no devolvía los resultados esperados incluyen "ORDER BY", mayor-a ">" y menor-que "<" comparisons,="" and="" the="" built-in="" sql="" server="" string="" manipulation="" functions="" such="" as=""></">

    Sin embargo, las comparaciones de igualdad, funcionará siempre y cuando las cadenas comparadas son equivalentes a un nivel de byte. Tenga en cuenta que si almacena datos UTF-8 en SQL Server no debe utilizar columnas de caracteres (CHAR, NCHAR, VARCHAR etc.). UTF-8 no es datos de carácter válido para SQL Server y al almacenar los datos de carácter no en las columnas de caracteres que se corre el riesgo de encontrarse con problemas tales como los problemas descritos en los siguientes artículos de Microsoft Knowledge Base:
    155723 INF: Truncamiento de SQL Server de una cadena DBCS
    234748 PRB: El controlador ODBC de SQL Server convierte los eventos de lenguaje a Unicode
    Si está pensando en esta opción, tenga en cuenta que si alguna vez necesita acceso a UTF-8 datos almacenados dentro de SQL Server desde cualquier aplicación que no sea un explorador Web (por ejemplo, desde una aplicación de ODBC no basada en Web) se necesitan para realizar una conversión de UTF-8 a UCS-2 dentro de esta aplicación como ODBC, OLEDB, COM, las llamadas API de Win32, VB y C en tiempo de ejecución manipulación de cadenas no funciona con datos UTF-8. Esto mueve la carga de la traducción a una aplicación diferente.
  5. Si sus requisitos no incluyen la necesidad de almacenar los datos de una combinación de idiomas que no puede satisfacerse mediante una sola página de códigos, no debe utilizar Unicode.
Compatibilidad con Unicode se introdujo a SQL Server a partir de SQL Server 7.0. Dado que SQL Server 6.5 no admite el almacenamiento de datos Unicode, las únicas opciones para SQL Server 6.5 se describen en los pasos 4 y 5.

Propiedades

Id. de artículo: 232580 - Última revisión: sábado, 08 de junio de 2013 - Versión: 5.0
La información de este artículo se refiere a:
  • 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
Palabras clave: 
kbinfo kbmt KB232580 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 232580

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com