1. 程式人生 > >JAVA/JS中中文編碼轉換

JAVA/JS中中文編碼轉換

一、JAVA中,使用UTF-8進行編碼 和 使用UTF-8的UrlEncode編碼結果不同

UTF-8“君山”:君山

UTF-8/UrlEncode“君山”:%e5%90%9b%e5%b1%b1

String s = "君山";
String xmlUTF8 = URLEncoder.encode(s, "UTF-8");//%e5%90%9b%e5%b1%b1

二、JS中,使用函式對URL編碼

encodeURI()/decodeURI():將URL中除特殊字元外全部進行UTF-8編碼/解碼

var a = encodeURI("Http://localhost:8080/abc/def/efg/君山&q=1;10+a'b,cd#df");
var b = decodeURI(a);

三、JS中,使用函式對URL編碼

encodeURIComponent()/decodeURIComponent():將URL中除特殊字元外全部進行UTF-8編碼/解碼,比encodeURI更加徹底字元更多。

var a = encodeURIComponent("Http://localhost:8080/abc/def/efg/君山&q=1;10+a'b,cd#df");
var b = decodeURIComponent(a);

四、URL的編解碼

URL的組成部分:

http://localhost:8080/examples/servlets/servlet/君山?author=君山

       PathInfo?QueryString

預設情況下,瀏覽器對PathInfo和QueryString編碼不同(分別是UTF-8和GBk),這為伺服器解碼帶來不小困難。

通過tomcat原始碼,得知對URL的URI部分進行解碼的字符集是在server.xml中<Connector URIEncoding="UTF-8">中定義的,如果沒有定義,預設為ISO-8859-1,所以當URI中有中文時(其中君山為PathInfo),設定一下tomcat會自動以UTF-8的形式對URI進行解碼,即可通過中文RequestMapping定位Controller中的方法了。

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8"
/>
以GET方式HTTP請求的QueryString和與以POST方式HTTP請求的表單引數都是作為Parameters儲存的,都通過request.getParameter獲取引數值,對它們的解碼是在request.getParameter方法第一次呼叫時進行的。

QueryString本身是通過Http的Header傳到服務端的,而解碼字符集是Header中ContentType定義的Charset(預設IOS-8859-1),要使用ContentType中定義的編碼,就要將<Connector useBodyEncodingForURI="true">,注意:它並不是對整個URI都採用BodyEncoding進行解碼,而僅僅是對QueryString使用BodyEncoding解碼。這時就可以傳遞中文引數了。

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8"
               useBodyEncodingForURI="true" /> <!-- 僅僅是QueryString使用BodyEncoding解碼 -->
最後,可以看出URL編解碼比較複雜,難以掌控,建議URL中最好不用中文。
五、POST表單的編解碼

POST表單的引數傳遞方式:Http的Body

QueryString引數傳遞方式:Http的Header

表單提交時用ContentTyep的Charset編碼,到服務端也是用ContentType的Chartset解碼,所以一般POST表單不會出現亂碼。

六、BODY的編解碼

通過


String ce = request.getCharacterEncoding(); //獲取伺服器解碼方式,

request.getrequest.setCharacterEncoding("UTF-8");//設定伺服器解碼方式,

相關推薦

JAVA/JS中文編碼轉換

一、JAVA中,使用UTF-8進行編碼 和 使用UTF-8的UrlEncode編碼結果不同 UTF-8“君山”:&#x541B;&#x5C71; UTF-8/UrlEncode“君山”:%e5%90%9b%e5%b1%b1 String s = "君山";

Java unicode中文編碼轉換和反轉

在java的很多配置檔案中,尤其是國際化資源中經常遇到類似\uf432這樣的unicode編碼,蒐集了下該編碼相關的資料,大致處理方法有如下: 1、Unicode轉 漢字字串。 這個過程最簡單的方式就是直接獲取。比如 String cnStr = "\ufeff\u4e2d\u56fd\u4eb

Java web常見編碼亂碼問題(二)

catalina 轉換 alt str 檢測 內容 tom 拼搏 image 根據上篇記錄Java web中常見編碼亂碼問題(一), 接著記錄亂碼案例:   案例分析:   2、輸出流寫入內容或者輸入流讀取內容時亂碼(內容中有中文)   原因分析:     a、 如果是

js時間戳轉換為時間格式

    //我審批的     $(function(){        // $('#mypower').click(function(){           &

js的型別轉換

先介紹一下 typeof 的使用方法: typeof(mix) 或者 typeof mix 其中 mix 可以是任何資料型別 js有六種資料型別: 五種簡單資料型別,又叫基本資料型別,分別為:Number,String,Boolean,Null,Undefined; 一種

Qt中文字元轉換問題

1 QString是按unicode編碼的,如果需要8bit編碼則要加 tr(),要與 char* 相互轉換則需要制定編碼格式:utf-8,gb2312,gbk等 2 自己遇到的問題:      通過 QString轉換為c

C++:中文編碼轉換

在介紹如何使用C++11標準庫進行中文編碼轉換之前,先說說一下byte string、multibyte string、wide string之間的區別。 byte string 由8位元的位元組組成的字串。由char表示位元組。因而字串長度=位元組數=char數 m

python字串編碼轉換

字串編碼轉換程式設計師最苦逼的地方,什麼亂碼之類的幾乎都是由漢字引起的。 其實編碼問題很好搞定,只要記住一點: 任何平臺的任何編碼,都能和Unicode互相轉換。 UTF-8與GBK互相轉換,那就先把UTF-8轉換成Unicode,再從Unicode轉換成GBK,反之同理。 注意:在python3中en

js資料型別轉換的三種方法 重要

方法主要有三種 轉換函式、強制型別轉換、利用js變數弱型別轉換。 1. 轉換函式: js提供了parseInt()和parseFloat()兩個轉換函式。前者把值轉換成整數,後者把值轉換成浮點數。只有對String型別呼叫這些方法,這兩個函式才能正確執行;對其他型別返回的都是NaN(Not a Nu

隨便發發,java gb2312與中文字元轉換,以及中文和Unicode的轉換

/**      * 中文轉Unicode      * @param gbString      * @return      */    public static String UnicodeEncoding(String gbString) {   //gbStri

java/js語音提醒功能的實現

    我們在java開發中,經常遇到實現語音提示的功能。目前市場上有許多成熟的語音提示的產品,並提供介面供使用者使用。所以我們沒有必要費心去書寫功能程式碼,只需要呼叫介面即可。需要注意的是,很多介面

Java專案日期型別轉換成Cron表示式

今天在做專案的時候遇到一個需求,需要動態的從頁面上傳遞時間,同時開啟一個定時任務,這裡就需要用到把Java時間轉換成Cron表示式,在網上找了一圈,沒有找到太合適的,於是自己動手寫了一個工具類: package com.useeinfo.bftu.utils; import

js 自定義轉換時間格式

js  中,如果將時間格式轉換為 “2017-08-09 12:00:00”格式,就需要自己寫轉換的時間格式函式,將其新增到 Date中。 Date.prototype.Format = funct

PB字元編碼轉換

//*******************************************code*********************************************************** //程式碼在PB9,window7 64bit 測試通過,對程式碼有疑問的可以傳送郵件進

編碼】使用JavaScript做中文編碼轉換

背景:用git bash跑curl命令的時候,會碰到中文無法輸入or無法正常工作的情況,這裡介紹先把中文轉碼,就可以正常使用了。這裡介紹JavaScript的方法:1 在url地址上的GET引數是中文時,使用console.log(encodeURIComponent('上海

中文編碼轉換說明

一 原理 環境:Page  :  Jsp,HtmlServer:  TomcatDB    :  Informix Jsp 檔案中需新增<%@page contentType="text/html;charset=gb2312" %>才能正確顯示中文的GBK編碼H

SQLITE中文編碼轉換的問題終於解決了。

java 編碼 UTF-8、ISO-8859-1、GBK Java支援UTF-8、ISO-8859-1、GBK等各種字型編碼,可筆者發現Java中字型編碼的問題仍難倒了不少程式設計師,網上雖然也有不少關於在Java中如何正確顯示中文的文章,但都不夠全面,筆者特意總結如下。 影響Java中字型編碼

js處理json Json物件與Json字串的轉化、JSON字串與Java物件的轉換

轉:https://www.cnblogs.com/zq-boke/p/5833387.html Json物件與Json字串的轉化、JSON字串與Java物件的轉換   一.Json物件與Json字串的轉化 1.jQuery外掛支援的轉換方式:   $.pars

javajsJSONObject,JSONArray,Map,String之間轉換——持續更新

--------------------------------------------------java中-------------------------------------------------------------- 1.String轉JSONObject

使用 Java中文字元轉換成 Unicode 編碼

這兩天操作XML使用到了Jdom,在建立XML檔案並輸出到硬碟的時候遇到一箇中文編碼的問題:Jdom預設輸出的XML編碼是UTF-8,但是文件中如果出現中文字元那麼該中文字元就會變成亂碼,造成XML檔案無法被正確解析。 UTF -8應該是可以用來表示中文的吧?我不知道這是不