В Java классы DataInputStream
и DataOutputStream
имеют readUTF
и writeUTF
, которые используют модифицированный формат UTF-8. Это нормально, если эти файлы используются только другими программами Java или одной и той же программой Java, но что, если они также читаются/записываются программой на другом языке? Или что, если вы используете стандартный формат, например BSON, который ожидает нормальную кодировку UTF-8? Есть ли способ использовать истинную кодировку UTF-8 с DataInput
и DataOutput
помимо ручного кодирования/декодирования строк с помощью Charset?Использование истинных UTF-8 в двоичных потоках в java
0
A
ответ
1
использовать InputStreamReader и InputStreamWriter, вместо этого вы можете инициализировать поток с определенной кодировкой.
Если вы используете JSon потоки, использовать библиотеку как gson, который обрабатывает потоки JSON тоже, которые, как предполагается придерживаться json.org форматирования, вы не должны использовать строковый поток со странным для кодирования transporing JSON потоков
Смежные вопросы
- 1. Сохранение двоичных данных в потоках
- 2. Использование фильтра в потоках
- 3. Использование NSAssert в потоках
- 4. Использование sleep() в потоках
- 5. Использование jCIFS в нескольких потоках
- 6. Параллельность в потоках Java
- 7. RejectedExecutionException в потоках Java
- 8. Чтение двоичных данных в Java
- 9. Темы в потоках в Java?
- 10. Приоритет в потоках в Java
- 11. Использование методов trait в потоках
- 12. Использование Application.Run() в разных потоках
- 13. Использование атомной переменной в потоках
- 14. Использование записей в потоках в Mule 3.4
- 15. Java-методы, выполняемые в потоках
- 16. Java Security Manager в потоках
- 17. Порядок процессов в потоках Java
- 18. confused о потоках в java
- 19. Тест стресса в потоках Java
- 20. Синхронизация в потоках для Java
- 21. Использование регулярных выражений и индекса итерации в потоках Java 8
- 22. Использование функций, возвращающих void в потоках Java 8
- 23. Программа многопоточности Java: совместное использование объектов в нескольких потоках
- 24. Что эквивалентно сканированию Haskell в потоках Java?
- 25. Использование глобальных переменных в потоках в Python
- 26. Использование коллекции в нескольких потоках в C#
- 27. Использование глобального словаря в потоках в Python
- 28. Использование акцента в DiagrammeR (utf8)
- 29. Использование UTF8 INSTR в SQLite
- 30. Использование двоичных данных в android?
Извините, JSON - плохой пример, поскольку он основан на тексте. И InputStreamWriter/Reader не совсем то, что я имел в виду, потому что они действительно работают, только если вы имеете дело с чисто текстовыми файлами. Но что, если у вас есть файл, который содержит двоичные записи, в которых некоторые из полей являются целыми и двойными, а другие поля - это строки с кодировкой UTF-8. Как вы могли бы разобраться со струнами в этом случае? Единственный способ, о котором я могу думать, это прочитать их как 'byte []' s, а затем декодировать их. – Thayne
Если вы строите это с нуля и можете управлять форматом вещей, никогда не применяйте свой собственный формат. Вместо этого используйте сериализатор, например буферы протоколов, сериализаторы xml, json/bson (и т. Д.). –
Если вы не можете помочь, я бы предложил просто прочитать байты и смещать части, которые должны быть unicode, и перевести их с помощью новой String (байты, кодирование). –