Windows NT从底层支援Unicode的意思是Unicode是机内码么?该如何解决

Windows NT从底层支援Unicode的意思是Unicode是机内码么?
首先感谢大家在百忙之余能看我的帖子!祝各位新年快乐!!

问题一:

刚刚看《windows程序设计》里面有一句原话如下:

“Windows NT从底层支援Unicode。这意味着Windows NT内部使用由16位字符组成的字符串。因为世界上其它许多地方还不使用16位字符串,所以Windows NT必须经常将字符串在操作系统内转换。Windows NT可执行为ASCII、Unicode或者ASCII和Unicode混合编写的程序。即,Windows NT支持不同的API函数呼叫,这些函数接受8位或16位的字符串(我们将马上看到这是如何动作的。)……”

这是不是意味着Unicode是Windows NT系统的机内码?


问题二:

我的电脑用的是Win7操作系统,有没有什么命令能够直接查询我操作系统使用的机内码?

------解决方案--------------------
机内码有二个概念:
1、Machine Code,又称为Machine Language,即cpu能执行的机器指令,所有编程语言必须转换为Machine Code才能被cpu执行。详细含义可参考http://www.linfo.org/machine_code.html
2、汉字机内码,又称“汉字ASCII码”,简称“内码”,指计算机内部存储,处理加工和传输汉字时所用的由0和1符号组成的代码。大部分汉字系统都采用将国标码每个字节高位置1作为汉字机内码。

楼主看《windows程序设计》的那段话,引出机内码的概念,不知道是指上面哪一种。


------解决方案--------------------
对irql的要求是因为缓冲区可能被交换出去,和字符串编码没关系
你可能被机内码这个名字忽悠了
机内码和windows7没什么关系,机内码就是一种用于存储汉字编码,如果不用中文windows7根本用不着机内码
unicode和机内码不一样
------解决方案--------------------
windows分为用户态和内核态,内核态即为你所说的内部。
用户态包括:第三方应用程序,windows子系统。
内核态:windows内核组件,内核驱动。
当用户态程序需要使用系统功能得时候,会通过2E中断(win2k)或者sysiner指令(xp之后)进入到内核态。比如:API函数WriteFile用于写文件,这个函数,在ntdll.dll中,将参数和功能码压栈,然后sysiner进入内核模式,内核程序根据ssdt查找相应功能码,然后处理。这其实就进入了内核态。

windows API即是应用程序接口,用户态接口。例如:ReadFile,这个函数既支持unicode又支持ansi。
但是这个函数在从用户态转换到内核态的时候,会把ansi字符串转换成unicode字符串。

意思就是说,windows内核是基于UNICODE的。所有用户态调用,进入内核态之后,ansi字符串参数都会被转换成unicode字符串。

只要做过内核开发的,都会明白这一点。

希望我说的对你有帮助。

------解决方案--------------------
探讨

引用:
windows分为用户态和内核态,内核态即为你所说的内部。
用户态包括:第三方应用程序,windows子系统。
……


谢谢你 当然有帮助

既然大家都说UNicode不是机内码,《Unicode汉字内码表》用在什么地方呢

------解决方案--------------------
我觉得根本不是一种概念。比如对于国标码GB2312来说,区位码和机器内部存储的码相差一个0xA0。因为如果不差这个的话,就很难和普通ASCII文本区分了。
所以每一种编码都应该有一种两种形式。
而对于Unicode来说,像U+1234这样的形式的就是它本身的编码。但是要到它的机内码就是UTF-8之类的形式,比如Windows用的主要是UTF-16 little endian这种机内码。
即使内核设计是基于Unicode的,但是它也无法阻止某些内核驱动程序使用ANSI字符来处理东西。所以LZ引用的那句话没有意义。
因为“机内”这个概念并不限定是内核中,只要是机器内部存储处理的都是机内。只不过Windows设计时选择用UTF-16LE,另外由于也兼容ANSI程序,一台Windows PC里最常用的机内码应该就是UTF-16LE和某种ANSI编码(比如GB18030、Big-5之类的)
------解决方案--------------------
我觉得楼主把概念完全搞混了
你所说的机内码指的是什么??

机器内部数据只有0,1。至于一个数字到底是数据,还是指令码,在执行到之前都是不确定的。
CPU要根据上下文去决定。

如果你说的是,操作系统内部字符串编码的话,那么windows操作系统内部就是unicode编码。
UNICODE是世界性编码。

探讨

引用:
windows分为用户态和内核态,内核态即为你所说的内部。
用户态包括:第三方应用程序,windows子系统。
……


谢谢你 当然有帮助

既然大家都说UNicode不是机内码,《Unicode汉字内码表》用在什么地方呢

------解决方案--------------------
探讨
内码什么的,都是虚的,什么都可以表示文字。