`
duanfei
  • 浏览: 733781 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于页面中文的处理及特殊字符(中文乱码)的处理

阅读更多

1、页面在url参数中向后台传输中文,会导致乱码的处理方法:

String name = new String(name.getBytes("iso-8859-1"),"utf-8");

    如果页面上传的中文有特殊字符时:

 <a href='xx.acion?CategoryName=encodeURIComponent("Visual C++")' > 

 


2、图片名为中文,需要在页面显示
在tomcat/conf/server.xml中

<Connector port="80" protocol="HTTP/1.1" URIEncoding="utf-8" maxThreads="150" connectionTimeout="20000" redirectPort="8443" />

 

3、在类中用Url方法

String url =encodeURL(url,"UTF-8");
public static String encodeURL(String url,String encode)   
            throws UnsupportedEncodingException {   
        StringBuilder sb = new StringBuilder();   
        StringBuilder noAsciiPart = new StringBuilder();   
        for (int i = 0; i < url.length(); i++) {   
            char c = url.charAt(i);   
            if (c > 255) {   
                noAsciiPart.append(c);   
            } else {   
                if (noAsciiPart.length() != 0) {   
                    sb.append(URLEncoder.encode(noAsciiPart.toString(),encode));   
                    noAsciiPart.delete(0, noAsciiPart.length());   
                }   
                sb.append(c);   
            }   
        }   
        return sb.toString();   
    }
String input = "http://www.nn.com/" + "query?
pg=q&kl=XX&stype=stext&q=%2B%22Java+I%2FO%22&search.x=38&search.y=3";
  try {
  String output = URLDecoder.decode(input, "UTF-8");
  System.out.println(output);
  }

http://tech.sina.com.cn/s/2008-07-07/1053722241.shtml

 

Js字符集编码转换函数
字符集转换:
4.ajax get请求的字符集乱码解决方案,发送端数据用reCode()方法编码加密,接收端用deCode()方法解码。
function reCode(str) { return encodeURIComponent(encodeURIComponent(str)); }
function deCode(str) { return decodeURIComponent(decodeURIComponent(str)); }

5.js-get请求特殊字符不可见问题(如‘+’号等):
location.href="url"+encodeURIComponent(str);

6.字符集转换函数:

对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
encodeURI() 方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串
encodeURIComponent,最多使用,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
/******************************
今天为这个东西搞了半天,记载下,上面的仅做参考吧,
以下是js中get方式传值特殊字符的处理:
*************************jsp之间:*********************************
/*
*js Unicode编码转换
*/
var decToHex = function(str) {
var res=[];
for(var i=0;i < str.length;i++)
res[i]=("00"+str.charCodeAt(i).toString(16)).slice(-4);
return "\\u"+res.join("\\u");
}

var decToHex2 = function(str) {
var res="",c;
for(var i=0;i < str.length;i++){
c=str.charCodeAt(i);
res+=(c< 32 || c==38 || c>127)?"\\u"+c.toString(16):str.charAt(i)
}
return res;
}

var hexToDec = function(str) {
str=str.replace(/\\/g,"+");
return unescape(str);
}

//var str=decToHex("decToHex unicode 编码转换");
//alert("编码后:"+str+"\n\n解码后:"+hexToDec(str));
************jsp与java:**************************************

var src = "dispatcher.jsp?requestUrl=storage/temporaryConv_confirmConversion.action&tmaterielId="+tmaterielId+"&materielId="+materielId+"&tmaterielName="+decToHex(tmaterielName)+"&materielName="+decToHex(materielName);

java中:
Unicode2GBK(tmaterielName);
/**
* 用于AJAX传来的中文参数unicode解码
* @param dataStr
* @return
*/
public static String Unicode2GBK(String dataStr) {
if (dataStr == null || "".equals(dataStr)) {
return dataStr;
}
int index = 0;

StringBuffer buffer = new StringBuffer();

while (index < dataStr.length()) {
try {
if (!"\\u".equals(dataStr.substring(index, index + 2))) {
buffer.append(dataStr.charAt(index));
index++;
continue;
}
} catch (Exception e) {

for (int j = index; j < dataStr.length(); j++) {
buffer.append(dataStr.charAt(index));
}
return buffer.toString();
}
String charStr = "";
charStr = dataStr.substring(index + 2, index + 6);
char letter = (char) Integer.parseInt(charStr, 16);
buffer.append(letter);
index += 6;
}

return buffer.toString();

}

 

7、jdk zipEntry 压缩中文文件名乱码

上网查了下,有两种方法,一种修改jdk ZipInputStream及ZipOutputStream 的源文件,比较麻烦,不建议此项.

  第二种 就是拿来主义,因为 开源项目 Ant 里已经有现成的实现.把ant.jar 加入到 工程下的lib目录即可.

  如果仅用到压缩,就加入ant.jar 就导致引入了一些不必要的文件,所以我找到Ant1.8的源码,然后只把需要的那一部分编译打包成了一个jar文件,供大家使用

 

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

zos = new ZipOutputStream(new FileOutputStream(zipname));
FileInputStream fis = new FileInputStream(file);
ZipEntry ze = new ZipEntry(file.getName());
ze.setSize(file.length());
ze.setTime(file.lastModified());
zos.putNextEntry(ze);       
zos.setEncoding("gbk");

 

 

分享到:
评论

相关推荐

    润乾报表乱码问题

    在信息技术领域,乱码问题是指字符在计算机中由于编码不一致或者不正确而导致的显示错误,通常表现为无法识别的特殊符号或者乱糟糟的方块。润乾报表乱码问题尤其令人头疼,因为它影响了数据的显示和传输,尤其是对于...

    java中文乱码字符集解决大全.pdf

    Java程序在处理中文字符时可能会遇到乱码问题,这主要源于计算机历史上的编码标准差异和Java自身的编码机制。本文将详细分析这个问题的来源、Java编码转换的过程以及解决策略。 1. 中文问题的来源 早期的计算机...

    java中文乱码之解决URL中文乱码问题的方法

    在Java开发中,遇到中文乱码问题是一种常见的挑战,特别是在处理URL时。URL中文乱码问题主要是由于URL编码和解码过程中的不一致导致的。下面将详细介绍如何解决这个问题,并探讨几种常用的方法。 首先,我们需要...

    中文乱码javaWEB开发各种解决中文乱码问题

    综上所述,解决Java Web开发中的中文乱码问题,需要从文件编码设置、页面编码控制、请求参数编码转换、过滤器应用以及GET请求特殊处理等多方面综合考虑,以确保应用程序在不同场景下都能正确处理和显示中文字符。

    java汉字乱码终极解决代码

    开发中前台页面向后台传参,汉字乱码,看了好多网上的方法都解决不了,所以写了一个工具类,判断是乱码就转换,不乱码就不乱换,汉字字母符号自动判断。最后完美解决汉字乱码问题。

    javaScript encodeURI中文乱码

    `encodeURI()`函数设计用于转换URL中的特殊字符,它会保留大部分字符不变,只对那些可能在传输中引起问题的字符进行编码,如空格、引号、尖括号等。然而,对于非英文字符的处理,尤其是中文字符,`encodeURI()`的...

    SWFUpload中文乱码.

    总的来说,解决SWFUpload中文乱码问题需要从多个角度考虑,包括客户端的JavaScript设置、服务器端的编码处理以及文件名的特殊处理。通过细心调试和配置,大多数情况下都可以成功避免中文乱码的出现,使得SWFUpload在...

    web开发中url乱码处理

    然而,这种方法可能在某些情况下仍然会导致乱码,因为`decodeURI()`并不是针对URL编码的,它会保留某些特殊字符,如空格。 4. **问题分析**:在尝试这两种方法无效的情况下,可能是因为URL在到达后台之前已经被自动...

    layui分页表格及日期乱码.zip

    laydate允许自定义日期格式,例如`yyyy-MM-dd`,如果在设置格式时使用了非UTF-8的特殊字符,就会导致乱码。确保日期格式字符串只包含标准的日期时间格式符,并保持前后端日期格式的一致性。 4. 解决通用乱码问题: ...

    android客户端向服务器提交请求的中文乱码问题

    当提交包含中文的参数时,如果不进行特殊处理,这些字符将以错误的编码发送,服务器收到后无法正确解析。 服务器端,特别是Tomcat这样的Web应用服务器,通常假设接收到的数据是UTF-8编码的。因此,当它尝试以UTF-8...

    [Java]PDF转图片解决中文乱码.zip

    PDF转图片是将PDF文档转换成图像格式的过程,这在处理PDF中的中文字符时尤为重要,因为转换后的图片可以避免文字乱码问题。Java中的PDFBox库是一个强大的工具,专门用于处理PDF文档,包括将PDF转换为图像。在这个...

    解决JSP页面中文乱码问题

    解决JSP页面中文乱码问题的关键在于理解整个请求-响应过程中的字符编码流程,并确保各个部分之间的编码一致。通过合理设置JSP文件的`pageEncoding`属性、请求的`characterEncoding`以及响应的`contentType`,可以...

    解决gb2312编码导致乱码问题

    在IT行业中,编码问题是一个常见的挑战,特别是在处理中文字符时。标题提到的“解决gb2312编码导致乱码问题”是一个典型的字符编码问题,它涉及到如何在不同的编码格式之间正确转换,以确保中文字符在传输和显示时的...

    ajax中文乱码如何解决

    这是因为某些特殊字符可能在第一次编码后仍需编码,例如空格会被编码为`%20`,再次编码则变为`%2520`。 ```javascript var post = "name=王力猛&email=wallimn@sohu.com&bokee=http://wallimn.bokee.com"; post ...

    Asp.net中的页面乱码的问题

    特别是当涉及到中文等特殊字符时,处理不当很容易导致页面显示异常。本文将根据提供的代码片段及描述,深入分析并提供解决方案。 #### 1. 全局配置设置 首先,我们来理解一下提供的XML配置片段: ```xml ...

    java开发乱码问题处理大全

    ### Java开发乱码问题处理大全:精通乱码处理,提升专业技能 在Java开发中,乱码问题是开发者常遇到的挑战之一,尤其是在处理多语言、跨平台应用时更为显著。本文将深入探讨Java开发中常见的乱码问题及其解决策略,...

    escape --AJAX和JS传中文乱码的最终解决方案

    在开发Web应用时,我们经常会遇到一个棘手的问题:AJAX和JavaScript在处理中文字符时出现乱码。这是因为浏览器、服务器以及数据编码之间的不匹配所导致的。"escape"函数在JavaScript中扮演着重要的角色,它可以帮助...

    常见编码及乱码的处理.pdf

    编码、字符、字符集和乱码处理的知识点概述: 1. 编码和字符: 编码是指用一系列规则来表示信息的方式,这些规则指定了如何将信息转换成计算机可以处理的形式。字符是构成文字和符号的基本单位,包括字母、数字、...

    JavaWeb开发中文乱码问题解决方案

    中文字符由于其特殊的编码方式(如GBK、UTF-8等),在不同编码格式之间转换时容易出现乱码。为了解决这个问题,开发者通常会采用过滤器(Filter)技术来统一处理请求和响应的编码格式。以下是一些关于JavaWeb中文...

Global site tag (gtag.js) - Google Analytics