2016-03-17 15 views
1

我有日文字符串'ぱはめ'。我想將它轉換成'%82%CF%82%CD%82%DF'。我希望有人會給我一個這種轉換的功能。日本字符編碼

+0

你的普通URL編碼函數產生什麼? – Thilo

+0

我的功能有點長。這裏的空間不足以編寫我的功能。我不知道如何在這裏添加長文本。 –

回答

1

您需要取出字符串並在特定的代碼頁中進行編碼。然後取每個編碼字節併產生其十六進制表示。就像這樣:

function MyEncode(const S: string; const CodePage: Integer): string; 
var 
    Encoding: TEncoding; 
    Bytes: TBytes; 
    b: Byte; 
    sb: TStringBuilder; 
begin 
    Encoding := TEncoding.GetEncoding(932); 
    try 
    Bytes := Encoding.GetBytes(S); 
    finally 
    Encoding.Free; 
    end; 

    sb := TStringBuilder.Create; 
    try 
    for b in Bytes do begin 
     sb.Append('%'); 
     sb.Append(IntToHex(b, 2)); 
    end; 
    Result := sb.ToString; 
    finally 
    sb.Free; 
    end; 
end; 

雖然你沒有說這一點,你希望將文本作爲932代碼頁編碼所以,你應該調用函數時傳遞的價值。

Writeln(MyEncode('ぱはめ', 932)); 

我必須說,在現代,看到這個Windows特定的多字節編碼仍在使用中有些令人驚訝。

+0

非常感謝您抽空幫助我。現在我可以解決我的問題。再次感謝。 :) –