haskell - 使用 Haskell 将代理对写入文件
问题描述
这是我的代码:
import qualified System.IO as IO
writeSurrogate :: IO ()
writeSurrogate = do
IO.writeFile "/home/sibi/surrogate.txt" ['\xD800']
执行上面的代码会报错:
text-tests: /home/sibi/surrogate.txt: commitBuffer: invalid argument (invalid character)
原因是 GHC 本身阻止了它,因为它们是代理代码点:https ://github.com/ghc/ghc/blob/21f0f56164f50844c2150c62f950983b2376f8b6/libraries/base/GHC/IO/Encoding/Failure.hs#L114
我想写一些需要这些数据的测试文件。现在,我正在使用 Python 来实现我想要的 - 但我很想知道是否有办法(使用 Haskell 的解决方法)来实现这一目标。
解决方案
当然,只需编写您想要的字节:
import Data.ByteString as BS
main = BS.writeFile "surrogate.txt" (pack [0xd8, 0x00])
推荐阅读
- selenium - 无法使用直到 WebDriverWait 的方法
- machine-learning - 从零开始的随机森林回归
- sql - 使用条件在 SQL Server 中使用 Pivot 将行转换为列
- angular - 我正在尝试以角度将 formControlName 传递给子组件,但在绑定表单时遇到了一些问题,请查找以下代码片段
- javascript - 我正在尝试在 javascript 中编写一个 while 循环。我的 console.log 不打印请求的消息
- firebase - 使用 Zapier 将数据从 Google 表格添加到 Firestore
- google-apps-script - 在谷歌表中设置时间增量格式
- visual-studio-code - 如何在某个单词之后添加换行符而不使用 VScode 中的正则表达式删除它?
- angular - ngFor - 将“快捷方式”分配给迭代复杂对象中的变量
- r - R 编程中的 Web-Scraping (rvest)