日期:2014-05-18  浏览次数:20467 次

国外空间设置了UTF-8编码中文还是出现乱码怎么样解决?
web.config   关于编码的设置如下:
        <globalization
                        fileEncoding= "utf-8 "
                        requestEncoding= "utf-8 "
                        responseEncoding= "utf-8 "
      />


页面编码部分设置如下(已用高级保存为UTF-8格式):
<%@   Page   language= "c# "   Codebehind= "test1.aspx.cs "   AutoEventWireup= "false "   Inherits= "web.test1 "   codePage= "65001 "%>
<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN "   >
<HTML>
      <HEAD>
      <title> test1 </title>
      <META   http-equiv= "Content-Type "   content= "text/html;   charset=utf-8 ">
      <meta   name= "GENERATOR "   Content= "Microsoft   Visual   Studio   .NET   7.1 ">
      <meta   name= "CODE_LANGUAGE "   Content= "C# ">
      <meta   name= "vs_defaultClientScript "   content= "JavaScript ">
      <meta   name= "vs_targetSchema "   content= "http://schemas.microsoft.com/intellisense/ie5 ">
</HEAD>
<body>  
                    ......
                  </body>
      </html>

用该页面向数据库写入一条数据(带中文字符),再用该页面读出数据并显示。结果所有中文字符全部变成“?”号的样子。
数据库存这条中文数据的字段类型为varchar,300。

我查过相关资料,资料上说用N系列的数据类型,就可以解决。但是我不想这样用。有什么其它的解决方法没有?我页面编码都已经设置成UTF-8了怎么样还是乱码呢?

更奇怪的就是我用ASP编写一个写入该数据库的中文记录,再读出来,如果我没设置成UTF-8就会显示出乱码,如果我在ASP中加上UTF-8编码设置就可以正常的显示中文,ASPX和ASP都是写入同一个数据库同一样字段,怎么会出现不同的结果呢?这也是我不想改N系列的字段类型的原因。既然ASP可以显示正常,所以我觉得ASPX应该可以的。

请问各位高手和前辈,像我这个问题该怎么样解决啊?

------解决方案--------------------
用nvarchar,或者保存前HtmlEncode,取出后decode
------解决方案--------------------
对,比如中文“你好”,编码后就是“%E4%BD%A0%E5%A5%BD”
------解决方案--------------------
没显示中文应该是你数据库用了varchar,一般都用nvarchar.还要检查数据库默认charset是什么.
------解决方案--------------------
你页面的编码是Unicode的,而你的数据库不是Unicode编码的,保存肯定会有问题了。
反正就是要保持一致,不管改哪一边