ページ中国語の処理及び特殊文字(中国語文字化けし)の処理について


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-ZencodeURI符号化されていない文字は82文字:!,#,$,&,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0-9,a-z,A-ZencodeURIComponent符号化されていない文字は71文字あります:!,',(,),*,-,.,_,~,0-9,a-z,A-Z/**********************************************************************************************************************************************************************************************以下はjsにおけるget方式の特殊文字伝達の処理である:******************************************js Unicode符号化変換*/var decToHex=function(str){var res=[];for(var i=0;i127)?"\\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+「復号後:」+hexToDec(str));****************************jspとjava:**********************************var src=「dispatcher.jsp?requestUrl=storage/temporaryConv_confirmConversion.action&tmaterielId=」+tmaterielId+「&materielId=」+materielId+「&tmaterielName=」+decToHex(tmaterielName)+「&materielName=」+decToHex(materielName);JAva中:Unicode 2 GBK(tmaterielName);/***AJAXからの中国語パラメータunicode復号*@param dataStr*@return*/public static String Unicode 2 GBK(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のソースファイルを修正する方法が2つあり、面倒で、これをお勧めしません.
2つ目は拿来主義です.オープンソースプロジェクトAntにはすでに既成の実現があるからです.ああjarは工事下のlibディレクトリに入れればよい.
圧縮のみを用いる場合はantを加える.JArは不要なファイルを導入したのでAnt 1を見つけました.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");