Teknologian jakaminen

Ratkaise kiinalaisten sotkuisten merkkien ongelma Oracle-tietokannassa, kun C# lukee US7ASCII-merkistöä

2024-07-12

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

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



Esipuhe

Äskettäin minun piti muodostaa yhteys sairaalan HIS-järjestelmään ja toisen osapuolen tietokantaan. Kävi ilmi, että sairaala käyttää Oraclea.AMERICAN_AMERICA.US7ASCIIKoodausmuoto on koodattu, jolloin ohjelmaan luetut kiinalaiset tiedot vääristyvät.

Lisää kuvan kuvaus tähän


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

1. Ratkaisu

Koska sairaalayksikön datakoodausta ei voi muuttaa, testasimme monia menetelmiä ja valitsimme lopulta tehokkaamman käsittelytavan (ODAC + OleDbConnection) käyttämällä itsenäistä oraakkeliohjainta käsittelyyn.

2. Asenna System.Data.OleDb-yhteyskirjasto

  1. Oracle.ManagedDataAccess.Client Se on C#:n yleisimmin käytetty paketti yhteyden muodostamiseen Oraclen tietokantaan. Se on myös Oraclen virallisesti tarjoama .NET-tietokirjasto, mutta se ei voi ratkaista sotkuisten merkkien ongelmaa.

  2. on hyväksyttäväSystem.Data.OleDb , se käyttää itsenäistä oraakkeliohjainta käsittelyyn, mikä on avain kiinalaisten sotkuisten merkkien ratkaisemiseen.
    Lisää kuvan kuvaus tähän

System.Data.OleDb Riippuvuudet:
Lisää kuvan kuvaus tähän

Ydinkoodi:

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

Ohjelmakutsu:
Lisää kuvan kuvaus tähän

3. Asenna ODAC-komponenttiohjain paikallisesti

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

Kun ODAC on asennettu, tietokone on käynnistettävä uudelleen.
Lisää kuvan kuvaus tähän
Lisää kuvan kuvaus tähän
Napsauta "Seuraava" kunnes asennus on valmis
Lisää kuvan kuvaus tähän

Lisää kuvan kuvaus

4. Muokkaa järjestelmäympäristömuuttujia

Tämän vaiheen tarkoituksena on pitää paikallisen ja asiakastietokannan merkistöt johdonmukaisina, jotta estetään tietojen vääristymät, kun niitä tarkastellaan paikallisesti.

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

Koodi on seuraava (esimerkki):
Lisää kuvan kuvaus tähän

5. Vianetsintäohjelma

  • Kiinalainen dataosa näytetään normaalisti, eikä se enää näytä vääriä merkkejä.
    Lisää kuvan kuvaus tähän

Tee yhteenveto

Yllä olevasta puhun tänään Historiallisista syistä johtuen Oraclella ei ollut kiinalaisia ​​merkistöjä (kuten oracle6, oracle7, oracle7.1), mutta jotkut käyttäjät ovat käyttäneet tietokantaa sen jälkeen ja tallentaneet sen US7ASCII:een. merkistö kiina, tämä artikkeli esittelee vain lyhyesti System.Data.OleDb-kirjaston, joka ratkaisee täydellisesti kiinalaisen US7ASCII-merkkijoukon oraakkelin tietokannan.