Compartir tecnología

Resuelva el problema de los caracteres chinos confusos en la base de datos Oracle cuando C# lee el juego de caracteres US7ASCII

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

👨 作者简介:大家好,我是Taro,全栈领域创作者
✒️ Página de inicio personal:Don Juan Taro
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏



Prefacio

Recientemente, necesitaba conectarme al sistema HIS del hospital y a la base de datos de la otra parte. Resultó que el hospital usa Oracle.AMÉRICA_AMERICANA.US7ASCIIEl formato de codificación está codificado, lo que hace que los datos chinos leídos en el programa sean confusos.

Insertar descripción de la imagen aquí


以下是本篇文章正文内容,下面案例可供参考

1. Solución

Debido a que la codificación de datos de la unidad hospitalaria no se puede cambiar, probamos muchos métodos y finalmente elegimos un método de procesamiento más eficiente (ODAC + OleDbConnection) utilizando un controlador Oracle independiente para el procesamiento.

2. Instale la biblioteca de conexión System.Data.OleDb

  1. Oracle.ManagedDataAccess.Cliente Es el paquete más utilizado en C# para conectarse a la base de datos de Oracle. También es la biblioteca de acceso a datos .NET proporcionada oficialmente por Oracle, pero no puede resolver el problema de los caracteres confusos.

  2. debe ser adoptadoSistema.Datos.OleDb , utiliza un controlador Oracle independiente para procesar, que es la clave para resolver caracteres confusos chinos.
    Insertar descripción de la imagen aquí

Sistema.Datos.OleDb Dependencias:
Insertar descripción de la imagen aquí

Código central:

  1. Cadena de base de datos de conexión:
<add connectionString="Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User ID=db;Password=db;" name="HIS" />
  • 1

Llamada a programa:
Insertar descripción de la imagen aquí

3. Instale el controlador del componente ODAC localmente

Base de datos ODAC: https://www.oracle.com/database/technologies/dotnet-utilsoft-downloads.html

Después de instalar ODAC, se debe reiniciar la computadora.
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Siga haciendo clic en "Siguiente" hasta que se complete la instalación.
Insertar descripción de la imagen aquí

Por favor agregue la descripción de la imagen.

4. Editar variables de entorno del sistema

Este paso es para mantener consistentes los juegos de caracteres de la base de datos local y del cliente para evitar datos confusos cuando se ven localmente.

变量名:NLS_LANG |  变量值:AMERICAN_AMERICA.US7ASCII
  • 1

El código es el siguiente (ejemplo):
Insertar descripción de la imagen aquí

5. Programa de depuración

  • La parte de datos chinos se muestra normalmente y ya no muestra caracteres confusos.
    Insertar descripción de la imagen aquí

Resumir

Lo anterior es de lo que hablaré hoy. Por razones históricas, los primeros Oracle no tenían conjuntos de caracteres chinos (como oracle6, oracle7, oracle7.1), pero algunos usuarios han utilizado la base de datos desde entonces y la han almacenado en US7ASCII. conjunto de caracteres.Chino, este artículo solo presenta brevemente el uso de la biblioteca System.Data.OleDb, que resuelve perfectamente el problema confuso del chino de la base de datos Oracle del conjunto de caracteres US7ASCII.