国外空间设置了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编码的,保存肯定会有问题了。
反正就是要保持一致,不管改哪一边