http://ruby-doc.org/core-2.2.3/String.html#method-i-each_char 中出现的 bytesize 方法,其中
"\x80\u3042".bytesize #=> 4
求教:\x80\u3042 是什么意思?
\x80\u3042 是 encoding string,就是一种以字符编码,而非字符本身来表示的 String。
\x80\u3042
\u3042 是 unicode 编码,表示一个以 unicode 编码的字符。
\u3042
\x80 是一个 hex 的编码,转换成 10 进制表示 128,即在字符编码表中第 128 位。刚刚好超过了 ASCII 规定的 0~127 个字符,所以这里 \x80 表示一个非 ASCII 字符,在不同编码下可以代表不同的字符。
\x80
我觉得这里用 \x80 只是为了证明 Ruby 的默认字符编码 UTF-8,且占用两个字节,即使是所有非 ASCII,但是又不知道具体什么编码的字符也是一样。
计算机并不能直接处理操作字符与符号,它只认识 0、1 这两个数字,所以如果想让计算机显示各种各样的字符与符号,就必须定义它们与数字的一一映射关系,也就是我们所熟知的字符编码
#1 楼 @lgn21st 受教了,感谢解释的这么耐心。
#2 楼 @pathbox 恩,谢谢
#1 楼 @lgn21st
如果是 unidode 编码,一般就是\u这种形式么?是否能提供一些参考资料,另外 unicode 和其其中一种实现形式 utf-8 的字节数是不一样的,那么如何区分这两种表示?
#5 楼 @runup 这些问题都非常容易搜到,我就不帮你搜了。
#6 楼 @lgn21st OK,这里谢过~问题很小,非常感谢。
终端测试了下:
“/u80".bytesize= 1, "/u3042".bytesize=3