Я ищу лучший способ конвертировать из Word8 в Text, проблема заключается в том, что использование функции runChildrenWithText для Heist требует ввода текста для привязки, но функция getParam возвращает ByteStrings, которую я могу преобразовать в Word8 но не текст из любого из этих форматов, поэтому у меня возникают проблемы с решением вопроса о том, куда идти отсюда, любая помощь, касающаяся наилучшего способа решения этой проблемы, оценивается.Haskell Word8 в текстовый формат
ответ
Data.Text.Encodings
упаковка содержит множество способов преобразования ByteString
s в Text
. Обратите внимание, что возможно, что ByteString
- Text
кодировка сбой (скажем, вы предполагаете, что ByteString
содержит данные UTF-8, но на самом деле это не так), так что это более сложный процесс, чем просто convert :: ByteString -> Text
.
В этом случае decodeUtf8 :: ByteString -> Text
будет вызывать нечистые исключения, поэтому decodeUtf8' :: ByteString -> Either UnicodeException Text
может быть предпочтительнее, если есть вероятность отказа декодирования.
Вы также можете построить более сложные схемы обработчиков ошибок декодирования, используя decodeUtf8With :: OnDecodeError -> ByteString -> Text
и Data.Text.Encodings.Error
.
Из-за любопытства, каковы другие кодировки, используемые 'ByteString' – DiegoNolan
' ByteString' не закодированы, это, по сути, просто «векторные слова8», чистые двоичные данные. Для удобства у него есть экземпляр «IsString», который позволяет вам притворяться, что это «String». 'Text' кодируется в кодировке UTF-16, но вы можете думать о нем как о« векторных »кодовых пунктах Unicode. Функции, принимающие 'ByteString' в' Text', предполагают, что 'ByteString' является своего рода кодированным потоком кодовой точки, а затем пересылает его в Unicode и сохраняет его как UTF-16. Это первое предположение может потерпеть неудачу, что приведет к ошибкам. –
@DiegoNolan Вот [список общих кодировок] (http://en.wikipedia.org/wiki/Character_encoding#Common_character_encodings). Как сказал tel, ByteString - это всего лишь байты. Для того, чтобы эти байты были конвертируемыми в текст любым способом, вы должны использовать кодировку символов. –
- 1. Haskell Как создать Word8?
- 2. Haskell: конвертировать bytestring в [word8]
- 3. Ptr Word8 в [Word8]
- 4. Haskell: Функция, которая преобразует Char в Word8
- 5. Haskell Как конвертировать Char в Word8
- 6. Безопасное обращение в Word8
- 7. В ролях [Int] - [Word8]
- 8. Лучший способ конвертировать между [Char] и [Word8]?
- 9. Текстовый файл Slurp в Haskell
- 10. Конвертировать текстовый формат в формат числа
- 11. Текстовый формат Xcode NSLog и текстовый формат UITextView
- 12. Добавить с собой Word8
- 13. Преобразование литералов гольцов в Word8
- 14. Ptr Word8 to ByteString
- 15. Quickbooks Текстовый формат
- 16. графический и текстовый формат
- 17. Преобразование Gtk.TreeView в текстовый формат
- 18. Форматирование Excel в текстовый формат
- 19. Преобразование даты в текстовый формат
- 20. Текстовый формат реестра Windows?
- 21. Определить текстовый формат
- 22. Редактировать текстовый формат
- 23. Haskell - Формат списка вывода
- 24. Какой структурированный текстовый формат?
- 25. Мобильный сайт текстовый формат
- 26. prawnto и текстовый формат
- 27. Запись в текстовый файл в IDE Haskell
- 28. Как настроить текстовый редактор Haskell в Atom?
- 29. Haskell - импортировать текстовый файл в список типа
- 30. Split байтовой строки на байт (вместо Word8 или Char)
Я не знаком с Хейстом, но это звучит для меня так же, как вы не хотите конвертировать Word8 в текст. Вместо этого вы хотите преобразовать либо '[Word8]', либо 'ByteString' в' Text'. Это верно? – mhwombat
ByteString to Text, вероятно, будет наиболее полезен, единственная причина, по которой я упомянул Word8 для текста, - это то, что мне удалось найти, как преобразовать ByteStrings в Word8. – stickybynature