Encoding 为什么有些角色会变成这样?而其他人则成为☐;(␇;)在编码到代码页时? 短版
地图绘制者有时使用的原因是什么?其他时间使用☐?Encoding 为什么有些角色会变成这样?而其他人则成为☐;(␇;)在编码到代码页时? 短版,encoding,character-encoding,Encoding,Character Encoding,地图绘制者有时使用的原因是什么?其他时间使用☐? Unicode: €‚„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ In 850: ?'".┼╬^%S<OZ''""☐--~Ts>ozY ^\_____________/^\_______/ | | | | | best fit | best fit | |
Unicode: €‚„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ
In 850: ?'".┼╬^%S<OZ''""☐--~Ts>ozY
^\_____________/^\_______/
| | | |
| best fit | best fit
| |
replacement replacement
怎么回事
为什么有时候它是个问号,有时候是个问号␇?
注意:缺乏映射对我来说并不十分重要。如果联邦政府不支持合理的编码,那么他们会接受我给他们的垃圾。所以我没意见
当我尝试调用MultiByteToWideChar
来反转映射时,出现了一个问题,该函数由于无效字符而失败。虽然我可以试着在以后找出反向编码回字符的问题;我很好奇编码映射器试图告诉我什么
额外乐趣
细心的观察者会理解我为什么选择角色,按照我选择的顺序,以及为什么会有空白。我不想提及这一点,以免混淆读者的问题。答案既微妙又显而易见 执行映射时,编码器尝试执行最佳拟合。因此,虽然目标代码页中不存在很多字符;它们可以很好地近似 有些字符没有任何等价的映射,也没有任何最佳匹配映射,因此只需替换为
?
- U+0037问号
The price of petrol is € 1.56 in Germany.
不幸的是:
The price of petrol is ? 1.56 in Germany.
问号意味着这个角色没有对等物,只是丢失了
另一个角色更微妙
在ASCII中,前32个字符是控制字符,例如
- 13:回车(␍)李>
- 10:线路馈电(␊)李>
- 9:水平选项卡(␉)李>
- 11:垂直选项卡(␋)李>
- 7:贝尔(␇)李>
- 27:逃跑(␛)李>
- 30:记录分隔符(␞)李>
- 13:第八注(♪)李>
- 10:反向白圈(◙)李>
- 9:白色圆圈(○)李>
- 11:男性标志(♂)李>
- 7:项目符号(•)
- 27:直角(∟)李>
- 30:黑色指向三角形(▲)李>
•德国:1.56欧元␍␊
•法国:1.49欧元 当在代码页850中编码时,变为: 汽油价格♪◙• 德国:?1.56♪◙• 法国:1.49欧元 注意三件事:
符号丢失;替换为€
?
- 保留了
符号•
CR
符号丢失;替换为LF
♪代码>和
◙代码>
- 如果我想保留CRLF,我必须假设1..32范围内的字符实际上是ASCII控制字符
汽油价格␍␊
␇ 德国:1.56欧元␍␊
␇ 法国:1.49欧元 - 如果我想保留我的字符(如¨,•,§),我必须永久丢失我的CRLF,并且假设1..32中的字符实际上是字符: 汽油价格♪◙• 德国:1.56欧元♪◙• 法国:1.49欧元
作为glyph chars系列的骄傲成员,西雅图已经见证了比太阳还要多的岁月
请参阅Michael Kaplan的(注意:cpXXX中32以下的代码不是ASCII字符,因此0x07不是U+0007 BELL。您是否询问最佳匹配的基本原理?根据文档,您可以更改“未知字符”,但为什么.NET将一个未知(目标集)字符编码为另一个具有最佳匹配的字符是为了实现者
The price of petrol is € 1.56 in Germany.
The price of petrol is ? 1.56 in Germany.