2009-09-02 82 views
3

如果我有一个设置为UTF-8的HTML页面。 然后我在表单中输入编码为big5的汉字并提交。 什么编码它在服务器端? 它会自动转换为UTF-8吗? 或者它是如何工作的? 谢谢!它是什么编码?

补充1: 其实我真的不确定,为什么浏览器可以决定使用哪种编码?因为编码是由IME生成的。例如:我用来输入中文字符的工具,对吧?

supplement2: 如果一切就像什么“迈克尔·马德森”在下面回应说,那怎么能ASP.NET处理这个问题,这样,无论而且不管我怎么输入表单中的字符,它会不会总是被破坏,但jsp不能?

回答

3

浏览器使用Unicode - 当字符在那里输入时,它们在内部存储为Unicode。当表单被提交时,它以任何合适的编码输出字符 - 通常是页面的编码。

如果您正在讨论从Big5文档进行复制/粘贴,那么当它插入到剪贴板时它已经被转换为Unicode - 甚至当文档被加载时(具体取决于您的编辑器)。

如果您正在讨论使用一些IME来输入字符,那么问题就会有问题,因为您的IME应该专门用于Unicode,因此Big5编码不会涉及。如果是这样,那么在Unicode与Unicode之间进行转换时会有一些层次,因此无论该部分如何,浏览器都不会知道源编码。

+0

为什么?系统可以自动将字符串从big5转换为utf-8? – MemoryLeak 2009-09-02 15:05:43

+1

是的。操作系统知道如何从每个编码中的值转换为实际字符,当操作系统正在使用操作系统时,操作系统的内部编码将用操作系统的内部编码来表示。这就是为什么传统应用程序仍能在Windows上工作的原因--Windows在内部使用UTF-16,但使用特定语言代码页的传统应用程序可以调用兼容性层,基本上在发送给函数的文本之后调用Unicode版本的API函数已被转换(当然,从API函数返回的文本也以其他方式转换)。 – 2009-09-02 15:48:18

+0

由于浏览器支持Unicode,因此它可以理解并处理操作系统给予它的东西,而无需转换。一旦被告知提交表单,它就会从系统编码转换为服务器请求的编码并发送转换后的文本。 – 2009-09-02 15:50:19

0

浏览器可以在big5发送它的文章,如果它想的话,服务器应该能够处理它。但是,你是什么意思,“我用格式编码big5输入中文字符”?当你输入字符时,确定由浏览器决定使用哪种编码?

+0

其实我真的不确定,为什么浏览器可以决定使用哪种编码?因为编码是由IME生成的。例如:我用来输入中文字符的工具,对吧? – MemoryLeak 2009-09-02 14:53:38

+0

这只是以某种适当的方式将文本数据导入浏览器。重要的是文本值,而不是涉及的编码。取决于操作系统,浏览器和IME可能以多种方式发生 - 但只要浏览器知道要传输哪些Unicode字符,就可以决定使用任何它喜欢的编码(并将其放入标头)。 – 2009-09-02 14:58:51

+0

我们可以看到的是“文本值”,但计算机只能识别HEX值的编码,对吧?所以如果你用IME输入字符并生成big5字符,那么浏览器会自动将它转换为UTF-8吗? – MemoryLeak 2009-09-02 15:04:43