Technologieaustausch

Lösen Sie das Problem verstümmelter chinesischer Zeichen in der Oracle-Datenbank, wenn C# den US7ASCII-Zeichensatz liest

2024-07-12

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

👨 作者简介:大家好,我是Taro,全栈领域创作者
✒️ Persönliche Homepage:Don Juan Taro
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏



Vorwort

Kürzlich musste ich eine Verbindung zum KIS-System des Krankenhauses und zur Datenbank der anderen Partei herstellen. Es stellte sich heraus, dass das Krankenhaus Oracle verwendet.AMERICAN_AMERICA.US7ASCIIDas Codierungsformat ist codiert, wodurch die in das Programm eingelesenen chinesischen Daten verstümmelt werden.

Fügen Sie hier eine Bildbeschreibung ein


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

1. Lösung

Da die Datenkodierung der Krankenhauseinheit nicht geändert werden kann, haben wir viele Methoden getestet und schließlich eine effizientere Verarbeitungsmethode (ODAC + OleDbConnection) unter Verwendung eines unabhängigen Oracle-Treibers für die Verarbeitung ausgewählt.

2. Installieren Sie die Verbindungsbibliothek System.Data.OleDb

  1. Oracle.ManagedDataAccess.Client Es ist das am häufigsten verwendete Paket in C#, um eine Verbindung zur Oracle-Datenbank herzustellen. Es ist auch die offiziell von Oracle bereitgestellte .NET-Datenzugriffsbibliothek, kann jedoch das Problem verstümmelter Zeichen nicht lösen.

  2. übernommen werden müssenSystem.Data.OleDb Für die Verarbeitung wird ein unabhängiger Oracle-Treiber verwendet. Dies ist der Schlüssel zur Lösung verstümmelter chinesischer Zeichen.
    Fügen Sie hier eine Bildbeschreibung ein

System.Data.OleDb Abhängigkeiten:
Fügen Sie hier eine Bildbeschreibung ein

Kerncode:

  1. Verbindungsdatenbankzeichenfolge:
<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

Programmaufruf:
Fügen Sie hier eine Bildbeschreibung ein

3. Installieren Sie den ODAC-Komponententreiber lokal

Nächster ODAC: https://www.oracle.com/database/technologies/dotnet-utilsoft-downloads.html

Nach der Installation von ODAC muss der Computer neu gestartet werden.
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Klicken Sie so lange auf „Weiter“, bis die Installation abgeschlossen ist
Fügen Sie hier eine Bildbeschreibung ein

Bitte fügen Sie eine Bildbeschreibung hinzu

4. Bearbeiten Sie die Systemumgebungsvariablen

Dieser Schritt dient dazu, die Zeichensätze der lokalen Datenbank und der Client-Datenbank konsistent zu halten, um verstümmelte Daten bei der lokalen Anzeige zu verhindern.

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

Der Code lautet wie folgt (Beispiel):
Fügen Sie hier eine Bildbeschreibung ein

5. Debugging-Programm

  • Der chinesische Datenteil wird normal angezeigt und zeigt keine verstümmelten Zeichen mehr an.
    Fügen Sie hier eine Bildbeschreibung ein

Zusammenfassen

Das Obige ist das, worüber ich heute sprechen werde. Aus historischen Gründen verfügte das frühe Oracle nicht über chinesische Zeichensätze (z. B. oracle6, oracle7, oracle7.1), aber einige Benutzer haben die Datenbank seitdem verwendet und sie im US7ASCII gespeichert Zeichensatz. In diesem Artikel wird nur kurz die Verwendung der System.Data.OleDb-Bibliothek vorgestellt, die das verstümmelte chinesische Problem der Oracle-Datenbank US7ASCII perfekt löst.