none
想不通的编码问题. RRS feed

  • 问题

  • 来这里提问之前,我已经查了很多资料,并且进行了思考.结果实在想不通,故请各位指点!

     

    1.首先我想知道 web.config中的编码, 网页html中的charset, 用户浏览器上设置的页面编码, 这几个的作用和联系.望指教!

     

    2.一个textbox控件, 在web.config中设置编码为GB2312,没有问题.  设置为ISO-8859-1, 回发后textbox中的内容被自动编码,如:输入"测试",回发后输入库内容自动变为:"测&#35797".

     

    这里是我百思不得其解的地方. ISO,GB,UTF这三种编码, 在低7位都是用来表示英文和数字的127个字符.这部分编码是兼容的.

    但是ISO不支持中文.GB和UTF支持.既然ISO不支持中文,那么在ISO编码的页面,是否可以输入中文显示中文呢?为什么会给我自动的编码?

     

    另外请教一个额外外问题.&这个是HTML转义符,但是测这种东西是什么表示形式? 这种问题如何去google搜索?这是一个个人问题,希望前辈们赐教.不胜感谢!

    2008年7月16日 2:06

答案

  • 1.web.config控制的是HTTP流输出的编码。
    2.HTML里面的charset说明的是本文件的编码。
    3.因为ASP.NET的HTML不是从本地文件读取的,而是从HTTP流获得的,所以HTML的charset理应描述HTTP流的编码。
    4.HTML的charset只是一个声明,浏览器不是100%就根据这个声明去选择显示时的编码。
    总结:如果charset和web.config的编码设置一致,浏览器很有可能以正确的编码显示,当然少数情况下浏览器自作聪明用别的编码的除外。同理,如果charset和web.config的编码设置不一致,浏览器很有可能不能正常显示,但是少数情况下浏览器智能感知到正确的编码,也是会有的。

    例如IE在见到title内包含中文,就会选择GB2312,就算之后你声明了charset也没用。为此,如果你的页面是UTF-8并且使用中文title的,记得把charset声明放在title之前,否则声明了也没用。

    &#****;是转义符,类似&lt;和&gt;等效于<和>一样。这个转义符代表的是后面数字对应的Unicode字符,&#27979;就是编码为27979的Unicode字符。
    2008年7月26日 1:42

全部回复

  • 目前我的解决办法是:
    在button按钮的事件中,首先进行 HtmlDecode .问题是可以解决.但是原因还是要大家帮忙想想.

    我初步认为,是浏览器提交的时候,就已经把"测试"两个字给进行了HtmlEncode编码.

    2008年7月16日 3:03
  • 一般中文设置为 GB2312或者UTF-8,还没有见过设置为ISO-8859-1的
    2008年7月16日 3:50
    版主
  • 又看到孟前辈的回复了^^再次荣幸一下.久闻大名.每次您的回复我都要拜拜....

     

    是因为公司的历史遗留问题,我们的英文版本网站编码是iso,一开始也没有中文应用.

     

    我习惯先理论,在实践. 但是有时候理论想不通的问题, 即使改起来很简单, 也会让我郁闷很久.....

     

     

     

    2008年7月16日 5:30
  • 1.web.config控制的是HTTP流输出的编码。
    2.HTML里面的charset说明的是本文件的编码。
    3.因为ASP.NET的HTML不是从本地文件读取的,而是从HTTP流获得的,所以HTML的charset理应描述HTTP流的编码。
    4.HTML的charset只是一个声明,浏览器不是100%就根据这个声明去选择显示时的编码。
    总结:如果charset和web.config的编码设置一致,浏览器很有可能以正确的编码显示,当然少数情况下浏览器自作聪明用别的编码的除外。同理,如果charset和web.config的编码设置不一致,浏览器很有可能不能正常显示,但是少数情况下浏览器智能感知到正确的编码,也是会有的。

    例如IE在见到title内包含中文,就会选择GB2312,就算之后你声明了charset也没用。为此,如果你的页面是UTF-8并且使用中文title的,记得把charset声明放在title之前,否则声明了也没用。

    &#****;是转义符,类似&lt;和&gt;等效于<和>一样。这个转义符代表的是后面数字对应的Unicode字符,&#27979;就是编码为27979的Unicode字符。
    2008年7月26日 1:42