Cómo modificar la codificación de la base de datos mssql
La codificación Unicode de SQL Server 2000 tiene características especiales. No basta con usar la codificación UTF8 en Rails y cambiar el formato de todos los archivos del proyecto Rails a UTF8. Con solo hacer esto, solo algunos caracteres chinos se pueden procesar correctamente y los datos chinos almacenados en SQL Server2000 están completamente confusos. El método de configuración correcto debe ser el siguiente.
1. Todos los campos de datos en ms sql server2000 deben seleccionarse como tipos que comiencen con n, como ntext, nvarchar, etc.
2. Instale el controlador ADO
Si instala el instalador con un solo clic para instalar Ruby, se habrán instalado todos los paquetes necesarios para conectarse a SQL Server. Sin embargo, el controlador ADO sí. no instalado.
Instálelo así:
Busque este directorio en el directorio de Ruby: \ruby\lib\ruby\site_ruby\1.8\DBD. en D:\ruby, entonces este es el directorio D:\ruby\lib\ruby\site_ruby\1.8\DBD. Cree una carpeta ADO en este directorio. Descargue Ruby-DBI y copie el archivo lib/dbd_ado/ADO.rb. X:/ruby /lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb
3. Configurar base de datos.yml: código Java
desarrollo:
adaptador: sqlserver
base de datos: nombre_base de datos
host: nombre_servidor
nombre de usuario: nombre_usuario
contraseña: su_contraseña_aquí
desarrollo:
adaptador: sqlserver
base de datos: nombre_base de datos
host: nombre_servidor
nombre de usuario: nombre_usuario
contraseña: your_pw_here
4. Agregue el siguiente código en Environment.rb
require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8
Aquí hay una breve explicación de la configuración en la Parte 4. El Unicode utilizado en SQL Server 2000 no es UTF8 y la codificación de enlace predeterminada de ADO está relacionada con las páginas de códigos establecidas por el sistema actual.
La configuración general de Windows no es Unicode. Por ejemplo, el sistema de Windows chino simplificado es generalmente gb2312. En Rails, la codificación de configuración de base de datos.yml: utf8 no sirve para el servidor SQL.
Para forzar a SQL Server a aceptar datos utf8, el valor de las páginas de códigos del enlace ado debe modificarse a utf8, de modo que parte del código ado no realice ningún procesamiento adicional después de aceptar los datos utf8. pasado por rieles De lo contrario, parte del código ado procesará estos datos de caracteres de acuerdo con el valor predeterminado de las páginas de códigos del sistema actual.
Entonces, en el sistema Windows chino, los datos pasados desde el proyecto utf8 Rails se pasarán a SQL Server2000 como datos codificados en GB2312, por lo que los datos almacenados en SQL Server2000 se convertirán en caracteres confusos y algunos errores de datos. ocurrió durante el procesamiento, lo que resultó en errores de ejecución de declaraciones SQL. Por ejemplo, la comilla simple situada a la derecha de un carácter chino común desaparecerá.
No configure WIN32OLE.codepage = WIN32OLE::CP_UTF8, toda la configuración de codificación de su sistema es así
rails (utf8)<-->ado (obtenido de acuerdo con el sistema actual cp Codificación, ya sea gb2312 u otra)<-->sql server 2000 (unicode)
La codificación de todo el sistema es diferente.
WIN32OLE.codepage = WIN32OLE::CP_UTF8 Este código es para cambiar el valor de cp. Toda la configuración de codificación del sistema es así
rails (utf8)<-->ado(utf8). ) <-->sql server 2000 (unicode)
Una vez que todo el sistema esté codificado, ya no habrá caracteres confusos en todo el sistema.