字节解码 D 格式



我有一些错误解码的文本片段。它像cp866一样被解码,但实际上它应该是utf-8"нажал кабан на баклажан"--> "╨╜╨░╨╢╨░╨╗ ╨║╨░╨▒╨░╨╜ ╨╜╨░ ╨▒╨░╨║╨╗╨░╨╢╨░╨╜")。我想修复它,我已经用 Python 编写

了解决任务的代码:
broken = "╨╜╨░╨╢╨░╨╗ ╨║╨░╨▒╨░╨╜ ╨╜╨░ ╨▒╨░╨║╨╗╨░╨╢╨░╨╜"
fixed = bytes(broken, 'cp866').decode('utf-8')
print(fixed) # it will print 'нажал кабан на баклажан'

但是,起初我试图在D中解决此问题,但未能找到答案。那么,如何在D中解决这个任务呢?

目前,D 没有广泛的本机功能用于在编码之间转换文本。

以下是一些选项:

  • 正如棘轮怪胎所提到的,D确实有std.encoding,但目前它没有涵盖很多编码。
  • 在Windows上,您可以使用std.windows.charset.fromMBSztoMBSz,它们包装MultiByteToWideCharWideCharToMultiByte
  • 您可以简单地将您感兴趣的编码嵌入到您的程序中(示例)。
  • 在 POSIX 上,可以调用iconv程序(示例),也可以使用 libiconv 库(D1 绑定)。

最新更新