我他妈这样写, Dim filename = file.FileName Dim temp As Byte() = Encoding.UTF8.GetBytes(filename) filename = Encoding.GetEncoding("GB2312").GetString(temp) 不行, 这样写 Dim filename = file.FileName Dim temp As Byte() = Encoding.GetEncoding("GB2312").GetBytes(filename) filename = Encoding.UTF8.GetString(temp) 不行,崩溃了,一个月都没解决,直接自卑了,
Request.ContentEncoding = Encoding.GetEncoding("gb2312");
主页面要是这样设置的话,整个页面都成了乱码。我webconfig是这样配置的。
<?xml version="1.0" encoding="gb2312"?> <globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
一定要用gb2312的话 或许需要写程序转换编码了。
后来用了swfupload,才出现乱码的,
我 用utf-8是按我刚才所说的那种做法,, 可是没用啊
String path = safe.safeString(request.getContextPath());
path = new String(path.getBytes("ISO-8859-1"),"utf-8");
Dim filename = file.FileName
Dim temp As Byte() = Encoding.UTF8.GetBytes(filename)
filename = Encoding.GetEncoding("GB2312").GetString(temp)
不行,
这样写
Dim filename = file.FileName
Dim temp As Byte() = Encoding.GetEncoding("GB2312").GetBytes(filename)
filename = Encoding.UTF8.GetString(temp)
不行,崩溃了,一个月都没解决,直接自卑了,
<head>标签下这么写:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />;后台如果是Servlet需要这么写:request.setCharacterEncoding("UTF-8");
这样的话,前台和后台都采用了统一的编码,一般是不会乱码的。我试过了,不会出现乱码。
如果和数据库打交道的话,以MySQL为例,需要把数据库的字符集也设置能utf8。
可以在MYSQL安装目录中,我的安装目录是:C:\Program Files\MySQL\MySQL Server 5.1;找到my.ini文件,用记事本打开,在[mysql]下面把default-character-set设置成utf8;注意下面还有一处需要设置成utf8;保存后,重新启动mysql服务,这样以后的数据库默认都是utf8编码了。
需要注意的是:其实我们在开发的时候不管是前台和后台,数据库都是用utf-8编码的话是不会出现中文问题的,因为utf8包含了世界上绝大多数语种,自然也包含中文了。我在开发的时候一般都是统一编码,从来没有出现所谓的中文问题。
//碰到这个问题,网上搜了下解决方式,无果,于是自己想办法解决掉了
//我的解决方式如下
string fname = postfiles[0].FileName;//得到客户端的文件名,这里是乱码
try
{
byte[] bytes = Encoding.Convert(
Encoding.UTF8,//swfupload默认是用utf-8上传的,如果是其它编码,则改成其它编码
Encoding.Default,
Encoding.Default.GetBytes(postfiles[0].FileName));//关键是这句,强制转换编码
Stream stream = new MemoryStream(bytes);
StreamReader objReader = new StreamReader(stream, Encoding.Default);
fname = objReader.ReadToEnd();//正确的文件名
objReader.Close();
objReader.Dispose();
}
catch (Exception){}