我们常见的内码有gb2312 big5 unicode什么的。我想问的是,我直接用输入法敲出来的字是什么编码的呢?
比如如下3个情景:
1、比如说我要是用c#/java写程序,这俩语言本身是unicode的,我在代码里直接敲进去的字符串,也都是unicode的,集成开发环境用vs2010和eclips都用起来没问题
2、但是如果用Python2.7的话,不在第一行加上coding:xxxxx汉字就都会乱码,但是不管我这里写的是utf-8还是python的IDLE自动识别的汉字编码,都是能正常显示中文的,但是一种是变长的(utf-8),一种是两字节的(IDLE识别的那种)都能正常显示,这是为什么呢?
3、同样是输入法敲进去的字,我写到记事本里,保存,记事本默认是按ANSI寸的,编码又变了。
那么输入法敲出来的是什么编码的字符呢?
根据上面情况1可以有假设:输入法打出来的字就是unicode编码的
那么情况2呢?3呢?
用输入法的时候系统究竟发生了什么?
是应该假设软件会向系统要指定编码的输入?还是说输入法打出来的字就是一种编码的,在输到程序里的时候转换了?
前续对 L_o_o_n_i_e的追问:
-2. 输入法输出的编码是固定的,在传入程序的之后,程序对编码进行了转换,转换成程序自己使用的那种然后存储到变量/内存里
我上面的两个假设是否正确呢?如果从一般想法的角度讲,第二个假设应该是-1成立。而且我也看到有人说"终于有更多的输入法支持unicode了"之类的话。
回答的很详细,谢谢!
我还想请问一下:
在你上面所说的(2)->(3)这个位置,就是说输入法传给程序的是什么呢?是字符的编码还是什么?
如果我假设输入法传给目标程序的是字符编码。
因为我在使用同一输入法向unicode和非unicode的程序里输入的时候都是没问题的,可以继续假设存在这两种情况之一:
-1. 程序在接受输入的时候告诉了操作系统/输入法它接收哪种编码的输入,然后输入法返回指定编码
字数不够,后接上面问题补充