encodejava
① 如何用java實現URLEncode
Java使用查表法實現一下urlEncode(RFC1738):
public final static String[] encodeTable = new String[2^8];
static{
for(int i=0;i<256;i++)
{
if(i>='0' && i<='9' || i>='a'&&i<='z' || i>='A' && i<='Z' ||| i=='-' || i=='_' || i=='.')
{
encodeTable[i] = (char)i + "";
}else
{
encodeTable[i] = "%" + String.format("%02x",i).toUpperCase();
}
}
}
public String urlEncode(final String sourceStr)
{
final StringBuilder sb = new StringBuilder();
for(int i=0;i<sourceStr.length;i++)
{
sb.append(encodeTable[sourceStr.charAt(i) && 0xFF]);
}
}
② java網頁項目中 為什麼會用到htmlEncode方法去轉換html元素為了防止什麼
js里沒有這個函數,asp或asp.net里用htmlEncode方法將 Html 源文件中不允許出現的字元進行編碼,通常是編碼以下字元"<"、">"、"&" 等。
你可以把這些特殊字元當作html的關鍵字,而html文本里是不允許出現這些關鍵字的,所以需要編碼,再解碼的形式在html頁面輸出。
------------------------------------------------------------------------------------
Html的Encode和Decode在伺服器端是很容易實現的,就拿ASP.net來說,調用現成的函數System.Web.HttpContext.Server.HtmlEncode或HtmlDecode就能簡單了事。 但隨著Ajax的發展,人們越來越重視javascript或vbscript的編程,這就使得大家不得不用這些腳本語言解決一些曾經不長解決的問題,Html的Encode / Decode就是一個這樣的例子,javascript好像並沒有現成的函數,網上的相關代碼也很少,主要思想大都是用正則表達式來替換(replace)"<"、">"、"&"等符號,其實有一個很巧妙的辦法能解決這個問題,請看下面兩個函數<script type="text/javascript">
function htmlEncode (str){
var div = document.createElement("div");
var text = document.createTextNode(str);
div.appendChild(text);
return div.innerHTML;
}
function htmlDecode (str){
var div = document.createElement("div");
div.innerHTML = str;
return div.innerHTML;
}
</script>
功能同函數名,htmlEncode是讓document.createTextNode把html代碼轉換成文本了,而htmlDecode是通過設置div的innerHTML使得瀏覽器對文本(編碼後的html)做了代碼自動調整,還原成了html,從而實現了編碼/解碼功能。
③ 如何用Java實現URLEncode
無需用抄Java實現URLEncode,jdk有已經實現了。
用法如下:
String urlStr = java.net.URLEncoder.encode("hello,網路", "GBK");
輸出urlStr:%C8%CE%BA%F0%B2%F0%B0%A1
String keyWord = java.net.URLDecoder.decode("%C8%CE%BA%F0%B2%F0%B0%A1
", "GBK");
輸出keyWord:hello,網路
④ java對String進行json編碼 實現類似與PHP中json_encode 方法的功能
一,json_encode作用:
json_encode — 對變數進行 JSON 編碼。
說明:string json_encode ($value ),返回 value 值的 JSON 形式。
參數:待編碼的 value ,除了resource 類型之外,可以為任何數據類型
該函數只能接受 UTF-8 編碼的數據(譯註:指字元/字元串類型的數據)
返回值:編碼成功則返回一個以 JSON 形式表示的 string 。
二,客戶端用java語言解碼:
方法一:
public String unescapeUnicode(String str){
StringBuffer b=new StringBuffer();
Matcher m = Pattern.compile("\\\\u([0-9a-fA-F]{4})").matcher(str);
while(m.find())
b.append((char)Integer.parseInt(m.group(1),16));
return b.toString();
}
方法二:
直接使用unescapeUnicode()方法解碼就可以了。
使用 json_simple.jar 包解析
下載地址:http://code.google.com/p/json-simple/downloads/list
JSON.simple是一個簡單的Java類庫,用於解析和生成JSON文本。不依賴於其它類庫,性能高。
Object obj=JSONValue.parse(jsonStr);
return obj.toString();
⑤ java如何把string轉為utf-8
java不同編碼之間進行轉換,都需要使用unicode作為中轉。
String str = "任意字元串";
str = new String(str.getBytes("gbk"),"utf-8");
備注說明:
str.getBytes("UTF-8"); 意思是以-8的編碼取得位元組
new String(XXX,"UTF-8"); 意思是以UTF-8的編碼生成字元串
舉例:
public static String getUTF8XMLString(String xml) {
// A StringBuffer Object
StringBuffer sb = new StringBuffer();
sb.append(xml);
String xmString = "";
String xmlUTF8="";
try {
xmString = new String(sb.toString().getBytes("UTF-8"));
xmlUTF8 = URLEncoder.encode(xmString, "UTF-8");
System.out.println("utf-8 編碼:" + xmlUTF8) ;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// return to String Formed
return xmlUTF8;
(5)encodejava擴展閱讀:
UTF-8編碼規則:
如果只有一個位元組則其最高二進制位為0;如果是多位元組,其第一個位元組從最高位開始,連續的二進制位值為1的個數決定了其編碼的位元組數,其餘各位元組均以10開頭。
實際表示ASCII字元的UNICODE字元,將會編碼成1個位元組,並且UTF-8表示與ASCII字元表示是一樣的。所有其他的UNICODE字元轉化成UTF-8將需要至少2個位元組。每個位元組由一個換碼序列開始。第一個位元組由唯一的換碼序列,由n位連續的1加一位0組成,首位元組連續的1的個數表示字元編碼所需的位元組數。
Unicode轉換為UTF-8時,可以將Unicode二進制從低位往高位取出二進制數字,每次取6位,如上述的二進制就可以分別取出為如下示例所示的格式,前面按格式填補,不足8位用0填補。
⑥ java 中如何調用encodeuri
String t=URLEncoder.encode(內容, 字元編碼);//字元編碼和文檔編碼一致
String t=URLEncoder.encode(txt, "GBK");//使用常見的gbk編碼
你在頁面上寫的話在使用前要導包或者直接寫java.net.URLEncoder.encode(txt, "GBK");
⑦ Ext encode()轉換後,如何用java進行中文解碼
<!DOCTYPEHTML>
<html>
<head>
<title>yugi</title>
<metacharset=UTF-8/>
<styletype="text/css">
</style>
<scripttype="text/javascript">
functionascii2native(val)
{
varasciicode=val.split(/u/);
varnativeValue=asciicode[0];
for(vari=1;i<asciicode.length;i++)
{
=asciicode[i];
nativeValue+=String.fromCharCode(parseInt("0x"+code.substring(0,4)));
if(code.length>4)
{
nativeValue+=code.substring(4,code.length);
}
}
returnnativeValue;
}
varstr="{"ampm":"u65f6u95f4","day1":2,"day2":0,"day3":0,"day4":0,"day5":0,"day6":0,"day7":0}";
str=ascii2native(str);
console.log(str);
</script>
</head>
<body>
</body>
</html>