2011-06-28 40 views
4

我必須制定一個方案,這是編碼系統如何編碼的日文字符

我有這樣的日文字符是:。

徒然製造或ゝ,一天的生活,去皮去硯火,是Yoshinashi欲哭感染心臟,如果你讓隱約寫的,抱着大師的薑黃索莫你想

我想這個字符串轉換成編碼是這樣的:

%26%2312388%3B%26%2312428%3B%26%2312389%3B%26%2312428%3B%26%2312394%3B%26%2312427%3B%26%2312414%3B%26% 2312445%3B%26%2312395%3B%26%2312289%3B%26%2326085%3B%26%2326286%3B%26%2312425%3B%26%2312375%3B%26%2312289%3B%26%2330831%圖3B%26%2312395%3B%26%2312416%3B%26%2312363%3B%26%2312402%3B%26%2312390%3B%26%2312289%3B%26%2324515%3B%26%2312395%3B% 26%2312358%3B%26%2312388%3B%26%2312426%3B%26%2312422%3B%26%2312367%3B%26%2312424%3B%26%2312375%3B%26%2312394%3B%26% 2312375%3B%26%2320107%3B%26%2312434%3B%26%2312289%3B%26%2312381%3B%26%2312371%3B%26%2312399%3B%26%2312363%3B%26%2312392%圖3B%26%2312394%3B%26%2312367%3B%26%2326360%3B%26%2312365%3B%26%2312388%3B%26%2312367%3B%26%2312428%3B%26%2312400%3B% 26%2312289%3B%26%2312354%3B%26%2312420%3B%26%2312375%3B%26%2312358%3B%26%2312371%3B%26%2312381%3B%26%2312418%3B%26% 2312398%3B%26%2312368%3B%26%2312427%3B%26%2312411%3B%26%2312375%3B%26% 2312369%3B%26%2312428%3B%26%2312290%3B。

我怎麼能這樣做?

+1

請更詳細一點解釋什麼是輸出是它應該是日文字符的URL編碼(它沒有)?也許如果你解釋你想使用「ASCII密鑰」 _for_什麼,這將有助於。 –

回答

8

我相信你正在尋找HttpUtility.UrlEncode,想不通編碼得到完全相同的輸出告訴你。

var testString = "つれづれなるまゝに、日暮らし、硯にむかひて、心にうつりゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。"; 
var encodedUrl = HttpUtility.UrlEncode(testString, Encoding.UTF8); 

你可能想改變你的問題,因爲你並不需要爲Unicode轉換爲ASCII,這是不可能的。你最好到Persent編碼或編碼URL Percent-encoding.

[編輯]

我想通了:

var testString = "つれづれなるまゝに、日暮らし、硯にむかひて、心にうつりゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。"; 
var htmlEncoded = string.Concat(testString.Select(arg => string.Format("&#{0};", (int)arg))); 
var result = HttpUtility.UrlEncode(htmlEncoded); 

結果將完全匹配的編碼你,你提供 步步:.

var inputChar = 'つ'; 
var charValue = (int)inputChar; // 12388 
var htmlEncoded = "&#" + charValue + ";"; // つ 
var ulrEncoded = HttpUtility.UrlEncode(htmlEncoded); // %26%2312388%3b 
+0

是亞歷克斯編碼字符串,路上問是混淆 –

+0

@zanhtet -........更新了答案 –

+0

感謝所有我有一個問題我已經測試你的答案它是完美的答案是OK,我不過我有一個問題我有這個十六進制值。我怎樣才能檢索到機Unicode。 – zanhtet

3

這是不可能的。Unicode是比ASCII要大得多,你不能擡頭從Unicode的ASCII每個字符。而ASCII是256個字符只(帶控制字符),Unicode是數以萬計的(我猜)。

+0

+1出色答卷 –

+0

所以,我怎樣才能改變這種話嗎?這是在傳統的ASP。 – zanhtet

1

這裏是一個似乎功能工作:.

public static string UrlDoubleEncode(string text) 
{ 
    if (text == null) 
     return null; 

    StringBuilder sb = new StringBuilder(); 
    foreach (int i in text) 
    { 
     sb.Append('&'); 
     sb.Append('#'); 
     sb.Append(i); 
     sb.Append(';'); 
    } 
    return HttpUtility.UrlEncode(sb.ToString()); 
} 
+0

謝謝,我會試試這個。 – zanhtet