Berbagi teknologi

Memecahkan masalah karakter Cina yang kacau di database Oracle ketika C# membaca kumpulan karakter US7ASCII

2024-07-12

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

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



Kata pengantar

Baru-baru ini, saya perlu terhubung ke sistem HIS rumah sakit dan database pihak lain. Ternyata rumah sakit tersebut menggunakan Oracle.AMERIKA_AMERIKA.US7ASCIIFormat pengkodean dikodekan, menyebabkan data berbahasa Mandarin yang dibaca ke dalam program menjadi kacau.

Masukkan deskripsi gambar di sini


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

1. Solusi

Karena pengkodean data unit rumah sakit tidak dapat diubah, kami menguji banyak metode dan akhirnya memilih metode pemrosesan yang lebih efisien (ODAC + OleDbConnection) menggunakan driver oracle independen untuk pemrosesan.

2. Instal pustaka koneksi System.Data.OleDb

  1. Oracle.AksesDataTerkelola.Klien Ini adalah paket yang paling umum digunakan dalam C# untuk terhubung ke database Oracle. Ini juga merupakan pustaka akses data .NET yang secara resmi disediakan oleh Oracle, tetapi tidak dapat menyelesaikan masalah karakter yang kacau.

  2. harus diadopsiSistem.Data.OleDb , ia menggunakan driver oracle independen untuk memprosesnya, yang merupakan kunci untuk memecahkan karakter Cina yang kacau.
    Masukkan deskripsi gambar di sini

Sistem.Data.OleDb Ketergantungan:
Masukkan deskripsi gambar di sini

Kode inti:

  1. String basis data koneksi:
<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

Panggilan program:
Masukkan deskripsi gambar di sini

3. Instal driver komponen ODAC secara lokal

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

Setelah ODAC terinstal, komputer harus di-restart.
Masukkan deskripsi gambar di sini
Masukkan deskripsi gambar di sini
Klik terus "Berikutnya" hingga instalasi selesai
Masukkan deskripsi gambar di sini

Silakan tambahkan deskripsi gambar

4. Edit variabel lingkungan sistem

Langkah ini adalah untuk menjaga rangkaian karakter database lokal dan klien tetap konsisten untuk mencegah data kacau saat dilihat secara lokal.

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

Kodenya seperti berikut (contoh):
Masukkan deskripsi gambar di sini

5. Program debug

  • Bagian data berbahasa Mandarin ditampilkan secara normal dan tidak lagi menampilkan karakter yang kacau.
    Masukkan deskripsi gambar di sini

Meringkaskan

Di atas adalah apa yang akan saya bicarakan hari ini. Karena alasan historis, Oracle awal tidak memiliki kumpulan karakter berbahasa Mandarin (seperti Oracle6, Oracle7, Oracle7.1), tetapi beberapa pengguna telah menggunakan database sejak saat itu dan menyimpannya di US7ASCII. kumpulan karakter berbahasa Mandarin, artikel ini hanya memperkenalkan secara singkat penggunaan pustaka System.Data.OleDb, yang dengan sempurna menyelesaikan masalah kacau bahasa Mandarin pada database oracle kumpulan karakter US7ASCII.