Unicode UTF-16和UTF-8转换是如何发生的?

Unicode UTF-16和UTF-8转换是如何发生的?,unicode,encoding,utf-8,utf-16,Unicode,Encoding,Utf 8,Utf 16,我对unicode字符代码点转换为UTF-16有点困惑,我正在寻找一个能以最简单的方式向我解释的人 对于类似“的角色” 我们如何得到这个值 我们如何将其转换回真正的代码点 关于代理对,它们是如何工作的 研究: my$U=66_700;#代码点 如果($U>0xffff){ my$U_prime=$U-0x1_0000;#某个中间值0x0_0000..0xF_FFFF sprintf'%d',$U_prime;#1164 sprintf'0x%04X',$U#U prime;#0x048C spr

我对unicode字符代码点转换为UTF-16有点困惑,我正在寻找一个能以最简单的方式向我解释的人

对于类似“的角色” 我们如何得到这个值

我们如何将其转换回真正的代码点

关于代理对,它们是如何工作的

研究:


my$U=66_700;#代码点
如果($U>0xffff){
my$U_prime=$U-0x1_0000;#某个中间值0x0_0000..0xF_FFFF
sprintf'%d',$U_prime;#1164
sprintf'0x%04X',$U#U prime;#0x048C
sprintf'0b%020b',$U#U prime;#0b0000000010001100

我的$HythTyNYBITS=$UYPrimultUT16用于超过平面0的字符。<代码> @格奥尔。我想更多地了解代理对,它们是如何工作的?考虑研究。我可以说,作为一个英语演讲者,“代理”看起来很奇怪。我会用不同的行话:“。我的意思是,某些代码点是保留的,因此它们不会与需要代码单元对的相同数值的UTF-16代码单元混淆。从UTF-16的角度来看,没有理由称这些值为“代理”(或“不在场证明”)。从Unicode代码点的角度来看,这些值是“不在场证明”因为它们指的是其他地方的东西。对于学习Unicode转换的初学者来说,这可能是重复的。这非常令人困惑,而且太复杂,难以理解。所以,你能用一种简单的方式解释它吗?有点像这个问题的答案-哪一部分令人困惑?你必须告诉我,这样我才能改进我的答案。-你可以运行在调试器中编写自己的代码或使用电子计算器手动完成每个步骤。嘿,感谢您花时间帮助我,我真的很感激。在涉猎了一段时间后,我终于自己找到了答案,但感谢您的时间,尽管这意味着很多。(祝您有愉快的一天)