Compartilhamento de tecnologia

Resolva o problema de caracteres chineses distorcidos no banco de dados Oracle quando C# lê o conjunto de caracteres US7ASCII

2024-07-12

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

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



Prefácio

Recentemente, precisei me conectar ao sistema HIS do hospital e ao banco de dados da outra parte. Descobri que o hospital usa Oracle.AMERICAN_AMERICA.US7ASCIIO formato de codificação é codificado, fazendo com que os dados chineses lidos no programa fiquem distorcidos.

Insira a descrição da imagem aqui


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

1. Solução

Como a codificação dos dados da unidade hospitalar não pode ser alterada, testamos diversos métodos e finalmente escolhemos um método de processamento mais eficiente (ODAC + OleDbConnection) utilizando um driver oracle independente para processamento.

2. Instale a biblioteca de conexão System.Data.OleDb

  1. Oracle.AcessoDeDadosGerenciados.Cliente É o pacote mais comumente usado em C# para conectar-se ao banco de dados Oracle. É também a biblioteca de acesso a dados .NET fornecida oficialmente pela Oracle, mas não pode resolver o problema de caracteres ilegíveis.

  2. deve ser adotadoSistema.Dados.OleDb , ele usa um driver oracle independente para processar, que é a chave para resolver caracteres chineses distorcidos.
    Insira a descrição da imagem aqui

Sistema.Dados.OleDb Dependências:
Insira a descrição da imagem aqui

Código principal:

  1. String do banco de dados de conexão:
<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

Chamada do programa:
Insira a descrição da imagem aqui

3. Instale o driver do componente ODAC localmente

Fonte ODAC: https://www.oracle.com/database/technologies/dotnet-utilsoft-downloads.html

Após a instalação do ODAC, o computador deve ser reiniciado.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Continue clicando em "Avançar" até que a instalação seja concluída
Insira a descrição da imagem aqui

Adicione a descrição da imagem

4. Edite as variáveis ​​de ambiente do sistema

Esta etapa é manter consistentes os conjuntos de caracteres do banco de dados local e do cliente para evitar dados distorcidos quando visualizados localmente.

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

O código é o seguinte (exemplo):
Insira a descrição da imagem aqui

5. Programa de depuração

  • A parte de dados em chinês é exibida normalmente e não exibe mais caracteres ilegíveis.
    Insira a descrição da imagem aqui

Resumir

Falarei acima sobre isso hoje. Devido a razões históricas, o Oracle inicial não tinha conjuntos de caracteres chineses (como oracle6, oracle7, oracle7.1), mas alguns usuários usaram o banco de dados desde então e o armazenaram no US7ASCII. conjunto de caracteres chinês, este artigo apresenta apenas brevemente o uso da biblioteca System.Data.OleDb, que resolve perfeitamente o problema distorcido em chinês do banco de dados oracle do conjunto de caracteres US7ASCII.