我有一些错误解码的文本片段。它被解码为 cp866 ,但实际上它应该是 utf-8 ("нажал кабан на баклажан"
- > "╨╜╨░╨╢╨░╨╗ ╨║╨░╨▒╨░╨╜ ╨╜╨░ ╨▒╨░╨║╨╗╨░╨╢╨░╨╜"
)。我想解决它,我已经用 Python 编写了代码来解决任务:
broken = "╨╜╨░╨╢╨░╨╗ ╨║╨░╨▒╨░╨╜ ╨╜╨░ ╨▒╨░╨║╨╗╨░╨╢╨░╨╜"
fixed = bytes(broken, 'cp866').decode('utf-8')
print(fixed) # it will print 'нажал кабан на баклажан'
然而,起初我试图在 D 中解决此问题,但未能找到答案。那么,如何在 D 中解决此任务?
答案 0 :(得分:4)
目前,D没有广泛的原生设施来在编码之间转换文本。
以下是一些选项:
std.windows.charset.fromMBSz
和toMBSz
,其中包含MultiByteToWideChar
和WideCharToMultiByte
。iconv
程序(example),或使用libiconv
库(D1 binding)。