Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 20162|Απάντηση: 2

[Λύθηκε] Λύση StreamReader για αλλοιωμένους χαρακτήρες κατά την ανάγνωση αρχείων

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 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
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 13/4/2018 5:11:39 μ.μ. |
Αυτό το άρθρο επεξεργάστηκε τελευταία φορά από το χρήστη QWERTYU στις 2018-4-13 17:18

Εάν εξακολουθεί να μην λειτουργεί, ο διακομιστής μπορεί να έχει συμπιέσει τα δεδομένα, λαμβάνοντας ως παράδειγμα το gzip, πρέπει πρώτα να αποσυμπιέσετε τα δεδομένα.

Δημοσιεύτηκε στις 19/4/2018 1:31:02 μ.μ. |
Εάν το περιεχόμενο ιστού είναι συμπιεσμένο με gzip και το περιεχόμενο είναι αλλοιωμένο, υπάρχουν δύο λύσεις

Πρώτη λύση:

//
        Περίληψη:
        Λάβετε ή ορίστε τον τύπο αποσυμπίεσης που χρησιμοποιείται.
        //
        Επιστροφή αποτελεσμάτων:
        Ένα αντικείμενο T:System.Net.DecompressionMethods που υποδεικνύει τον τύπο της αποσυμπίεσης που χρησιμοποιείται.
        //
        Ανωμαλία:
        T:System.InvalidOperationException:
        Η τρέχουσα κατάσταση του αντικειμένου δεν επιτρέπει τον ορισμό αυτής της ιδιότητας.
        public DecompressionMethods AutomaticDecompression { get; σειρά; }
Γίνεται η ακόλουθη γραμμή κώδικα, οι αλλαγές είναι πολύ μικρές!!




Δεύτερη λύση:



Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com