最近跟 Windows 的 UTF-16 打交道有点多,查东西的时候看到了这个很有意思的演讲

https://www.youtube.com/watch?v=z-ug2dwcSz8

比如 0x410xF0 0x80 0x81 0x81 UTF-8 解码之后都是 U+0041 ("A"),这样编码就可以绕过一些过滤器

我发现「都 2024 了还在乎什么编码无脑 UTF-8 就完事了」还是挺无知的,一方面是有这些奇奇怪怪的 abuse 方法等待挖掘,另一方面 UTF-8 也不是完美的,比如编码大量 CJK 之类需要多字节的字符的时候编码效率是没有比如 GBK 或者 UTF-16 高的,我下了一本 GBK 编码的小说,转成 UTF-8 之后文件尺寸从 4.9 MiB 涨到了 7.3 MiB

当然还有就是跨平台的问题,以往我开发的东西没一个做 i18n 的,我的 Windows 还一直开着 UTF-8 支持,一开始做 i18n 就得考虑 wchar_t * 的问题了,希望 UTF-8 早点出 beta 甚至成为默认,我就能少写很多 #ifdef _WIN32

编码这东西,很久没操心过了,还是得上点心
 
 
Back to Top