Condivisione della tecnologia

Risolvi il problema dei caratteri cinesi confusi nel database Oracle quando C# legge il set di caratteri US7ASCII

2024-07-12

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

👨 作者简介:大家好,我是Taro,全栈领域创作者
✒️ Home page personale:Don Giovanni Taro
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏



Prefazione

Recentemente ho avuto bisogno di connettermi al sistema HIS dell'ospedale e al database dell'altra parte. Si è scoperto che l'ospedale utilizza Oracle.AMERICANO_AMERICA.US7ASCIIIl formato di codifica è codificato, causando confusi i dati cinesi letti nel programma.

Inserisci qui la descrizione dell'immagine


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

1. Soluzione

Poiché la codifica dei dati dell'unità ospedaliera non può essere modificata, abbiamo testato molti metodi e alla fine abbiamo scelto un metodo di elaborazione più efficiente (ODAC + OleDbConnection) utilizzando un driver Oracle indipendente per l'elaborazione.

2. Installare la libreria di connessione System.Data.OleDb

  1. Oracle.ManagedDataAccess.Client È il pacchetto più comunemente utilizzato in C# per connettersi al database Oracle. È anche la libreria di accesso ai dati .NET fornita ufficialmente da Oracle, ma non può risolvere il problema dei caratteri confusi.

  2. deve essere adottatoSistema.Dati.OleDb , utilizza un driver Oracle indipendente per l'elaborazione, che è la chiave per risolvere i caratteri cinesi confusi.
    Inserisci qui la descrizione dell'immagine

Sistema.Dati.OleDb Dipendenze:
Inserisci qui la descrizione dell'immagine

Codice principale:

  1. Stringa del database di connessione:
<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

Chiamata al programma:
Inserisci qui la descrizione dell'immagine

3. Installare localmente il driver del componente ODAC

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

Dopo l'installazione di ODAC, è necessario riavviare il computer.
Inserisci qui la descrizione dell'immagine
Inserisci qui la descrizione dell'immagine
Continua a fare clic su "Avanti" fino al completamento dell'installazione
Inserisci qui la descrizione dell'immagine

Per favore aggiungi la descrizione dell'immagine

4. Modificare le variabili di ambiente del sistema

Questo passaggio serve a mantenere coerenti i set di caratteri del database locale e del client per evitare dati confusi quando visualizzati localmente.

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

Il codice è il seguente (esempio):
Inserisci qui la descrizione dell'immagine

5. Programma di debug

  • La parte dei dati cinesi viene visualizzata normalmente e non visualizza più caratteri confusi.
    Inserisci qui la descrizione dell'immagine

Riassumere

Quanto sopra è ciò di cui parlerò oggi. Per ragioni storiche, i primi Oracle non avevano set di caratteri cinesi (come oracle6, oracle7, oracle7.1), ma da allora alcuni utenti hanno utilizzato il database e lo hanno archiviato nell'US7ASCII. set di caratteri cinese, questo articolo introduce solo brevemente l'uso della libreria System.Data.OleDb, che risolve perfettamente il problema confuso del cinese del database Oracle del set di caratteri US7ASCII.