Przykładowo, po odczytaniu znaku π (\u03C0
) z pliku przy użyciu interfejsu API FileReader otrzymuję znak pi, gdy go czytam, używając oczekiwanego FileReader.readAsText(blob)
. Ale kiedy używam FileReader.readAsBinaryString(blob)
, otrzymuję zamiast tego wynik \xcf\x80
, który wydaje się nie mieć żadnej widocznej korelacji ze znakiem pi. Co się dzieje? (To chyba ma coś wspólnego ze sposobem, UTF-8/16 jest kodowany ...)Różnica między readAsBinaryString a readAsText za pomocą FileReadera
Odpowiedz
No cóż, jeśli to wszystko, czego potrzeba ... :)
CF80
jest kodowanie UTF-8 π.
uwzględnia kodowanie pliku. W szczególności, ponieważ masz plik zakodowany w UTF-8, może być wiele bajtów na znak. Odczytując go jako tekst, kodowanie UTF-8 jest odczytywane bez zmian, a otrzymasz ciąg znaków.
FileReader.readAsBinaryString
, z drugiej strony, robi dokładnie to, co mówi. Odczytuje bajt pliku po bajcie. Nie rozpoznaje znaków wielobajtowych, co w szczególności jest dobrą wiadomością dla plików binarnych (w zasadzie wszystko oprócz pliku tekstowego). Ponieważ π jest dwubajtową postacią, otrzymasz dwa pojedyncze bajty, które tworzą ją w twoim ciągu.
Ta różnica może być widoczna w wielu miejscach. W szczególności, gdy kodowanie zostanie utracone i pojawią się znaki takie jak é wyświetlane jako à ©.
- 1. Różnica między pipetowaniem HTTP a multipleksowaniem HTTP za pomocą SPDY
- 2. Różnica między hash_map a unordered_map?
- 3. Różnica między obiektem a *?
- 4. Różnica między jquery a $
- 5. Różnica między pulą a klastrem
- 6. Różnica między Redis a kafka
- 7. Uzyskiwanie szerokości i wysokości obrazu za pomocą filereadera
- 8. Różnica między malloc a dlmalloc
- 9. Różnica między kompasem a sass?
- 10. Różnica między bip pid a $$
- 11. Różnica między ApplicationInfo a PackageInfo?
- 12. różnica między __u8 a uint8_t
- 13. Różnica między String [] a i String ... a
- 14. Różnica między ciągiem a tekstem w szynach?
- 15. Jaka jest różnica między pakietem a intencją?
- 16. Różnica między wystąpieniami DateTime a czasem Clj
- 17. Różnica między klasą APIView a klasą viewsets?
- 18. Różnica między kodowaniem a sortowaniem?
- 19. Różnica między onbeforeunload a onunload
- 20. Różnica między OpenCV a OpenCL
- 21. Różnica między wysokością a tłumaczeniemZ
- 22. Różnica między CMAKE_PROJECT_NAME a PROJECT_NAME?
- 23. Różnica między autoconf a autoreconf
- 24. Różnica między transakcją a transakcjąScope
- 25. Różnica między File.Copy a File.Move
- 26. Różnica między _declspec a __declspec?
- 27. Różnica między repozytorium a usługą?
- 28. Różnica między CCNode a CCLayer?
- 29. różnica między * y ++ a ++ * y?
- 30. Różnica między IPFS a Filecoin?
'CF80' to kodowanie UTF-8 dla π. – deceze
... o, masz rację ... dzięki! – gengkev
... to było chyba zbyt oczywiste, ale możesz to opublikować jako odpowiedź, jeśli chcesz. – gengkev