我想问一下  在页面上输入的字符串的编码格式是根据什么判断的
开始认为是根据网页设置的编码显示来确定输入的字符串的编码格式
后来一想不对,不管网页设置的何种编码显示,只不过是显示的内容被转换成别的编码格式显示了,
但是输入的内容实际上还是根据PC环境来定是不是?
这个所谓的pc环境是不是根据输入法的编码格式来定输入字符串的编码格式???为什么我要问这个问题,是因为我遇上了个问题,在手机开发中,由于手机的品种不同,内置的编码格式也不同
比如说日本几款手机docomo的,一些普通的字符还可以,但是要命的还能输入画像...
结果插入到数据库就报错,说输入了sjis(shift-jis日本文字的一种编码格式)文字,数据库是UTF8的
我就试验着在程序中将其sjis转换成UTF8格式,虽然画像的文字变??了但是这样一来却发现除了数字和字母没变其他的一些片假名就是全角格式的都变成了??这样可不行,原来没转换的时候倒还能插入的,这样转行不通
不知道有没有什么好的方法,别跟我说改数据库的编码格式,这样还是同样的问题。

解决方案 »

  1.   

    搜索:NChardet 可以实现你要的效果。
      

  2.   

    将所有字符串转换为unicode编码后存入数据库:public static string ToUnicode(string str)
            {
                byte[] data = Encoding.BigEndianUnicode.GetBytes(str);
                int i = 0;
                StringBuilder sb = new StringBuilder();
                foreach (byte b in data)
                {
                    if (i++ % 2 == 0) sb.Append("\\u");
                    sb.AppendFormat("{0:X2}", b);
                }
                return sb.ToString();
            }
      

  3.   

    我早转过了  但是原来的格式就是sjis编码  你再转unicode编码  一些全角文字都会变乱码  
    只能考虑7楼兄弟的智能猜文字了  不过不是很理想 
    算了  直接报出错  不让输入那种图像文字得了   
      

  4.   

    手机这个没接触过..不清楚
    不过前些日子我开发一个搜索引擎的快照功能,使用UTF-8保存、输出,就不会出现乱码了..