Saltar al contenido

¿Cómo usar la intercalación UTF-8 en la base de datos de SQL Server?

Si te encuentras con alguna parte que no comprendes puedes comentarlo y haremos todo lo necesario de ayudarte rápidamente.

Solución:

UTF-8 no es un conjunto de caracteres, es una codificación. El juego de caracteres para UTF-8 es Unicode. Si desea almacenar texto Unicode, utilice el nvarchar tipo de datos.

Si la base de datos usara UTF-8 para almacenar texto, aún no obtendría el texto como datos UTF-8 codificados, lo obtendría como texto decodificado.

Puede almacenar fácilmente texto codificado en UTF-8 en la base de datos, pero luego no lo almacena como texto, lo almacena como datos binarios (varbinary).

¡No! No es una broma.

Eche un vistazo aquí: http://msdn.microsoft.com/en-us/library/ms186939.aspx

Tipos de datos de caracteres que son de longitud fija, nchar o de longitud variable, nvarchar, datos Unicode y utilizan el juego de caracteres UNICODE UCS-2.

Y también aquí: http://en.wikipedia.org/wiki/UTF-16

El antiguo UCS-2 (Conjunto de caracteres universales de 2 bytes) es una codificación de caracteres similar que fue reemplazada por UTF-16 en la versión 2.0 del estándar Unicode en julio de 1996.

¡Parece que esto finalmente será compatible con SQL Server 2019! SQL Server 2019 – ¿Qué hay de nuevo?

Desde BOL:

Compatibilidad con UTF-8

Soporte completo para la codificación de caracteres UTF-8 ampliamente utilizada como codificación de importación o exportación, o como intercalación a nivel de base de datos o de columna para datos de texto. UTF-8 está permitido en el CHAR y VARCHAR tipos de datos, y se habilita al crear o cambiar la intercalación de un objeto a una intercalación con el UTF8 sufijo.

Por ejemplo,LATIN1_GENERAL_100_CI_AS_SC a
LATIN1_GENERAL_100_CI_AS_SC_UTF8. UTF-8 solo está disponible para intercalaciones de Windows que admitan caracteres complementarios, como se introdujo en SQL Server 2012. NCHAR y NVARCHAR Permitir solo la codificación UTF-16 y permanecer sin cambios.

Esta función puede proporcionar ahorros de almacenamiento significativos, según el conjunto de caracteres que se utilice. Por ejemplo, cambiar un tipo de datos de columna existente con cadenas ASCII de NCHAR(10) a CHAR(10) el uso de una intercalación habilitada para UTF-8 se traduce en una reducción de casi el 50 % en los requisitos de almacenamiento. Esta reducción se debe a que NCHAR(10) requiere 22 bytes para el almacenamiento, mientras que CHAR(10) requiere 12 bytes para el mismo Unicode
string.

Actualización 2019-05-14:

La documentación parece estar actualizada ahora y explica nuestras opciones a partir de MSSQL 2019 en la sección “Soporte de intercalación y Unicode”.

Actualización 2019-07-24:

Artículo de Pedro Lopes – Senior Program Manager @ Microsoft sobre la introducción de la compatibilidad con UTF-8 para Azure SQL Database

valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *