|
|
Δημοσιεύτηκε στις 13/4/2018 4:11:20 μ.μ.
|
|
|

Σήμερα, όταν έφτιαχνα ένα παράθυρο διαλόγου Open File OpenFileDialog, έπρεπε να διαβάσω το ανοιχτό αρχείο και να το εμφανίσω στο RichTextBox στη φόρμα. Ωστόσο, κατά την εμφάνιση του αρχείου, διαπιστώθηκε ότι η εμφανιζόμενη κινεζική συμβολοσειρά ήταν αλλοιωμένη. Τα βασικά μέρη του κώδικα είναι τα εξής:
Στην αρχή, νόμιζα επίσης ότι υπήρχε πρόβλημα με την κωδικοποίηση χαρακτήρων, οπότε όταν αρχικοποίησα το StreamReader, πρόσθεσα τις παραμέτρους κωδικοποίησης χαρακτήρων σε αυτό και το πρόσθεσα αρκετές φορές, Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, δοκίμασα όλα τα σχήματα κωδικοποίησης που μπορούσαν να προστεθούν, αλλά το αποτέλεσμα δεν ήταν καλό.
Αρχικά, το λειτουργικό σύστημα από τα Windows 2000 και αργότερα χρησιμοποιούσε Unicode για επεξεργασία αρχείων, έτσι . Η προεπιλεγμένη κωδικοποίηση αρχείων για το .Net είναι επίσης Unicode. Εκτός αν ορίζεται διαφορετικά, η προεπιλεγμένη κωδικοποίηση του StreamReader είναι Unicode και όχι η κωδικοσελίδα ANSI του τρέχοντος συστήματος. Ωστόσο, τα περισσότερα από τα έγγραφα εξακολουθούν να αποθηκεύονται σε κωδικοποίηση ANSI και το κινεζικό κείμενο χρησιμοποιεί gb2312, το οποίο προκαλεί κινεζικούς αλλοιωμένους χαρακτήρες, πράγμα που σημαίνει ότι η μορφή κωδικοποίησης πρέπει να καθορίζεται κατά την ανάγνωση του κειμένου.
Η λύση είναι: System.Text.Encoding.Default ενημερώνει το StreamReader για την κωδικοποίηση του τρέχοντος λειτουργικού συστήματος.
|
Προηγούμενος:.net/c# Xml, Json, Hessian, Σύγκριση σειριοποίησης buffer πρωτοκόλλουΕπόμενος:.net/c# Χρησιμοποιήστε το Costura.Fody για να συσκευάσετε το DLL στο EXE
|