1 .NET中的string在内存中存储时使用的是什么编码?utf8还是unicode?
2 是否有可能在一个string中保存指定编码的字符串?比如保存gb2312编码的字符串.??也可参见我的另一个实际的问题.
http://community.csdn.net/Expert/topic/4687/4687886.xml?temp=.783642

解决方案 »

  1.   

    问题1:unicode
    问题2:可以转换
    用System.Text.UnicodeEncoding.Convert()
    主要方法都晨System.Text里,可以查看MSDN
      

  2.   

    1. 不需要知道。string里存储是抽象意义上的字符串,与用什么编码无关。2. 不可以。 string里只有一种编码。 但是string可是和byte[] 互相转换。 根据不同的 Encoding 类转换的结果也不一样
      

  3.   

    设置以下webconfig,把utf8改成gb2312即可
      

  4.   

    设置web.config文件,把其中所有utf8都改成gb2312即可
      

  5.   

    1. UNICODE
    2. 不可以转换解释:
    在 .NET 中,string 是抽象的 '字符' 构成的串,而并不是 C 语言中 char[]因此,当你要把 string 转化成 byte[] 时,你可以使用你需要的编码,但对于 string 来说,不要去讨论它的编码。详情请参见:
    http://www.regexlab.com/zh/encoding.htm
      

  6.   

    是啊,string只是一个容器,你在里面放什么是你自己的事情~
      

  7.   

    可能我没有问清楚.
    1楼和viena的回答没有弄清楚我的问题.我希望在一个string变量里保存gb2312编码的字符串.这通过常规的方法是不行的.我找到的方法很bt
    string s = "这是个测试";
    byte[] gb2312bytes = System.Text.Encoding.Default.GetBytes(s);
    string sInGb = System.Text.Encoding.Unicode.GetString(gb2312bytes);不过这还解决不了我的实际问题.见原来的贴子.ASP.NET 中的Response.AppendHeader(string, string)方法只能传递string 类型的参数.而且我不知道什么时候这个字符串被UTF-8又编码了一遍.
    别跟我说改Web.config的配置.我试过了.
      

  8.   

    1、在内存中是按照Unicode的编码格式储存的。
    2、字符串编码对于字符串没有任何意义,字符串没有编码。就像日期显示格式对于DateTime型的数据没有任何意义一样,string就是储存字符串的,并不保存任何与字符串无关的东西,例如字符串编码。
      

  9.   

    我希望在一个string变量里保存gb2312编码的字符串.这通过常规的方法是不行的.
    ---这是不可能的,string有自己的格式,你只能转换成你需要的byte[]
      

  10.   

    这么多大侠重重地纠正了搂主的概念,希望搂主不要坚持自己的误解。搂主之所以有这个迷惑的问题,是因为搂主在 "概念" 上有误解。
    http://www.regexlab.com/zh/encoding.htm
      

  11.   

    其实没有误解.我知道编码只针对bytes不针对string我只是看到java中有这样的定义才问的.
    new String(fileName.getBytes("gb2312"), "ISO8859-1")