Κοινή χρήση τεχνολογίας

Επίλυση του προβλήματος των κινεζικών μπερδεμένων χαρακτήρων στη βάση δεδομένων Oracle όταν το C# διαβάζει το σύνολο χαρακτήρων US7ASCII

2024-07-12

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

👨 作者简介:大家好,我是Taro,全栈领域创作者
✒️ Προσωπική αρχική σελίδα:Δον Χουάν Τάρο
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏



Πρόλογος

Πρόσφατα, χρειάστηκε να συνδεθώ στο σύστημα HIS του νοσοκομείου και στη βάση δεδομένων του άλλου μέρους Αποδείχθηκε ότι το νοσοκομείο χρησιμοποιεί Oracle.AMERICAN_AMERICA.US7ASCIIΗ μορφή κωδικοποίησης είναι κωδικοποιημένη, με αποτέλεσμα τα κινεζικά δεδομένα που διαβάζονται στο πρόγραμμα να αλλοιώνονται.

Εισαγάγετε την περιγραφή της εικόνας εδώ


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

1. Λύση

Επειδή η κωδικοποίηση δεδομένων της νοσοκομειακής μονάδας δεν μπορεί να αλλάξει, δοκιμάσαμε πολλές μεθόδους και τελικά επιλέξαμε μια πιο αποτελεσματική μέθοδο επεξεργασίας (ODAC + OleDbConnection) χρησιμοποιώντας ένα ανεξάρτητο πρόγραμμα οδήγησης oracle για επεξεργασία.

2. Εγκαταστήστε τη βιβλιοθήκη σύνδεσης System.Data.OleDb

  1. Oracle.ManagedDataAccess.Client Είναι το πιο συχνά χρησιμοποιούμενο πακέτο στη C# για σύνδεση στη βάση δεδομένων Oracle. Είναι επίσης η βιβλιοθήκη πρόσβασης δεδομένων .NET που παρέχεται επίσημα από την Oracle, αλλά δεν μπορεί να λύσει το πρόβλημα των μπερδεμένων χαρακτήρων.

  2. πρέπει να υιοθετηθείSystem.Data.OleDb , χρησιμοποιεί ένα ανεξάρτητο πρόγραμμα οδήγησης μαντείου για την επεξεργασία, το οποίο είναι το κλειδί για την επίλυση κινεζικών μπερδεμένων χαρακτήρων.
    Εισαγάγετε την περιγραφή της εικόνας εδώ

System.Data.OleDb Εξαρτήσεις:
Εισαγάγετε την περιγραφή της εικόνας εδώ

Κωδικός πυρήνα:

  1. Συμβολοσειρά βάσης δεδομένων σύνδεσης:
<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

Πρόσκληση προγράμματος:
Εισαγάγετε την περιγραφή της εικόνας εδώ

3. Εγκαταστήστε τοπικά το πρόγραμμα οδήγησης στοιχείου ODAC

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

Μετά την εγκατάσταση του ODAC, πρέπει να γίνει επανεκκίνηση του υπολογιστή.
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ
Συνεχίστε να κάνετε κλικ στο "Επόμενο" μέχρι να ολοκληρωθεί η εγκατάσταση
Εισαγάγετε την περιγραφή της εικόνας εδώ

Προσθέστε περιγραφή εικόνας

4. Επεξεργασία μεταβλητών περιβάλλοντος συστήματος

Αυτό το βήμα είναι να διατηρήσετε τα σύνολα χαρακτήρων της τοπικής βάσης δεδομένων και της βάσης δεδομένων πελάτη συνεπή για να αποτρέψετε αλλοιωμένα δεδομένα όταν προβάλλονται τοπικά.

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

Ο κώδικας είναι ο εξής (παράδειγμα):
Εισαγάγετε την περιγραφή της εικόνας εδώ

5. Πρόγραμμα εντοπισμού σφαλμάτων

  • Το τμήμα κινεζικών δεδομένων εμφανίζεται κανονικά και δεν εμφανίζει πλέον αλλοιωμένους χαρακτήρες.
    Εισαγάγετε την περιγραφή της εικόνας εδώ

Συνοψίζω

Για τα παραπάνω θα μιλήσω σήμερα Για ιστορικούς λόγους, η πρώιμη Oracle δεν είχε σύνολα κινεζικών χαρακτήρων (όπως oracle6, oracle7, oracle7.1), αλλά ορισμένοι χρήστες χρησιμοποίησαν τη βάση δεδομένων από τότε και την αποθήκευσαν στο US7ASCII. Κινέζικο σύνολο χαρακτήρων, αυτό το άρθρο εισάγει μόνο εν συντομία τη χρήση της βιβλιοθήκης System.Data.OleDb, η οποία λύνει τέλεια το κινεζικό μπερδεμένο πρόβλημα της βάσης δεδομένων του συνόλου χαρακτήρων US7ASCII.