String Unicode解码何时应因异常而中断?
我正在致力于将Unicode支持引入窄字符串应用程序,在研究它如何无忧无虑地处理所有的字符*字符串时,我想到了以下几点: 在对Unicode进行解码时,程序员通常可以选择三种方法来处理格式错误的字符串—忽略所有解码错误、从结果字符串中删除无效字符、在第一次解码错误中出错,或者用替换字符替换无法解码的任何内容 我不喜欢因为安全原因而忽略这种方法——很容易使字符串看起来很好,但在去掉精心设计的错误后就变得很糟糕了。在这种情况下,用替换字符替换错误要好得多——看起来可能更糟,但有明显的视觉迹象表明事情没有按计划进行,而且替换字符不允许单词以不同的含义合并String Unicode解码何时应因异常而中断?,string,unicode,utf-8,utf8-decode,String,Unicode,Utf 8,Utf8 Decode,我正在致力于将Unicode支持引入窄字符串应用程序,在研究它如何无忧无虑地处理所有的字符*字符串时,我想到了以下几点: 在对Unicode进行解码时,程序员通常可以选择三种方法来处理格式错误的字符串—忽略所有解码错误、从结果字符串中删除无效字符、在第一次解码错误中出错,或者用替换字符替换无法解码的任何内容 我不喜欢因为安全原因而忽略这种方法——很容易使字符串看起来很好,但在去掉精心设计的错误后就变得很糟糕了。在这种情况下,用替换字符替换错误要好得多——看起来可能更糟,但有明显的视觉迹象表明事情
但在第一次出错后抛出异常或停止解码的实际用例是什么?这种“验证”的意义是什么?让我们假设某个函数得到了一个显然无效的UTF8字符串-程序员应该如何利用这些知识?答案是,这取决于。在很多事情上,包括你的语言是否有例外。这个问题太宽泛了。好吧,Python有例外。C不会,但C解码器可以停止解码并返回某种错误条件标志。这个问题根本不依赖于语言功能。你能澄清一些“其他事情”吗?对我来说,这个问题相当狭隘——我对选择解码器失败的原因感兴趣,而解码失败从来都不是关键。