Por ejemplo, cuando leo el carácter π (\u03C0
) desde un Archivo usando la API FileReader, me aparece el carácter pi cuando lo leo utilizando FileReader.readAsText(blob)
que se espera. Pero cuando uso FileReader.readAsBinaryString(blob)
, obtengo el resultado \xcf\x80
, que no parece tener ninguna correlación visible con el carácter pi. ¿Que esta pasando? (Esto probablemente tiene algo que ver con la forma en que se codifica en UTF-8/16 ...)Diferencia entre ReadAsBinaryString y readAsText usando FileReader
Respuesta
Bueno, si eso es todo lo que necesitaba ... :)
CF80
es la codificación UTF-8 para π.
FileReader.readAsText
tiene en cuenta la codificación del archivo. En particular, dado que tiene el archivo codificado en UTF-8, puede haber múltiples bytes por carácter. Al leerlo como texto, el UTF-8 se lee tal como está, y obtienes tu cadena.
FileReader.readAsBinaryString
, por el contrario, hace exactamente lo que dice. Lee el byte del archivo por byte. No reconoce caracteres de varios bytes, que en particular son buenas noticias para los archivos binarios (básicamente todo menos un archivo de texto). Como π es un carácter de dos bytes, obtienes los dos bytes individuales que lo componen en tu cadena.
Esta diferencia se puede ver en muchos lugares. En particular, cuando se pierde la codificación y ve caracteres como é que se muestran como à ©.
- 1. API HTML5 de lectura de archivo como texto y binarios
- 2. La diferencia entre $ * y $ @
- 3. MySQL: diferencia entre ', `,' y"
- 4. Diferencia entre objeto y *?
- 5. Diferencia entre. y #
- 6. ¿Diferencia entre == y caso?
- 7. Diferencia entre & y &
- 8. VBA: Diferencia entre y y +
- 9. ¿Diferencia entre nueva y sobrescritura?
- 10. Diferencia entre ipa y xcarchive
- 11. Diferencia entre BackgroundWorker y Thread?
- 12. Diferencia entre MvcHtmlString.Create() y Html.Raw()
- 13. Diferencia entre onforeforeload y onunload
- 14. diferencia entre intent.setClass() y intent.setComponent()
- 15. Diferencia entre self.navigationController.navigationItem y self.navigationItem
- 16. Diferencia entre Javascript y PHP
- 17. Diferencia entre putback() y unget()
- 18. ¿Diferencia entre% 5B% y% 5B0%?
- 19. Diferencia entre Stream.CopyTo y MemoryStream.WriteTo
- 20. Diferencia entre transacción y TransactionScope
- 21. Diferencia entre Application_Start y Application_OnStart
- 22. FileInputStream vs FileReader
- 23. Diferencia entre y
- 24. diferencia entre fecha y hora y DateTime2
- 25. Diferencia entre -Wconversion entre gcc y g ++
- 26. Diferencia entre subprocess.Popen y os.system
- 27. Diferencia entre decimal y decimal
- 28. ¿Diferencia entre trazo y relleno?
- 29. Diferencia entre interrupción y eventos
- 30. Diferencia entre netTcpContextBinding y netTcpBinding
'CF80' es la codificación UTF-8 para π. – deceze
... oh, tienes razón ... ¡gracias! – gengkev
... eso fue probablemente demasiado obvio, pero puedes publicar eso como una respuesta si quieres. – gengkev