直接用输入法打出来的字是什么编码的呢?

我们常见的内码有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了"之类的话。

"直接用输入法打出来的字" -- 这里含好几个过程。
(1)当你用键盘打字时,从键盘进入计算机的是ASCII码序列。
(2)“输入法”把 ASCII码序列 转换成 输入法 自己规定的 码。
(3)你在一个窗上看到的东西,例如 notepad 的文本编辑窗,wordpad 的文本编辑窗, 或 DOS 黑窗(控制台命令窗)那是 把 “输入法自己规定的码”显示出来,这里有一个编码到字体(font)到bitmap点阵图形的转换。只有当它们匹配时才能显示出有意义的 字的形状。否则看上去是“乱码”。
以DOS 黑窗为例,只有正确设置它的 所谓 代码页(code page) ,才能显示出有意义的字形。
GBK的code page是CP936;
BIG5的code page是CP950;
GB2312的code page是CP20936;
DOS 命令 CHCP 不带参数 可以显示 当前 “代码页”,加参数可以改变 “代码页"
例如:chcp 936 例如: chcp 437
(4)从文本编辑窗 到 存放的文件 也有 代码的转换。
例如,notepad, 可以存放为 unicode 小端码,unicode 大端码,UTF-8码.
unicode 文件会在文件头自动添加 unicode BOM ( Byte-Order Mark)
---
所以, 直接用输入法打出来的字是什么编码的呢,具体情况具体分析,不可一概而论。追问

回答的很详细,谢谢!
我还想请问一下:
在你上面所说的(2)->(3)这个位置,就是说输入法传给程序的是什么呢?是字符的编码还是什么?
如果我假设输入法传给目标程序的是字符编码。
因为我在使用同一输入法向unicode和非unicode的程序里输入的时候都是没问题的,可以继续假设存在这两种情况之一:
-1. 程序在接受输入的时候告诉了操作系统/输入法它接收哪种编码的输入,然后输入法返回指定编码
字数不够,后接上面问题补充

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-03
繁体字 就是用 BIG5 吧!好像BIG5就是 港 澳 台 的编码!
第2个回答  2011-05-03
留名看结果
相似回答