2016-03-17 1 views
1

J'ai une chaîne japonaise de 'ぱ は め'. Je veux le convertir en '% 82% CF% 82% CD% 82% DF'. J'espère que quelqu'un me donnera une fonction pour cette conversion.Codage de caractères au Japon

+0

Que produit votre fonction de codage d'URL normale? – Thilo

+0

ma fonction est un peu longue. l'espace ici n'est pas suffisant pour écrire ma fonction. Je ne sais pas comment ajouter un long texte ici. –

Répondre

1

Vous devez prendre la chaîne et l'encoder dans une page de codes spécifique. Prenez ensuite chaque octet codé et produisez sa représentation hexadécimale. Comme ceci:

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; 

Bien que vous ne l'avez pas dit cela, vous souhaitez encoder le texte comme page de code 932. Donc, vous devriez passer cette valeur lors de l'appel de la fonction.

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

Je dois dire que dans le moderne, il est un peu surprenant de voir cet octet multiples spécifique à Windows encodage encore en cours d'utilisation.

+0

Merci beaucoup pour votre temps à m'aider. Maintenant, je peux résoudre mon problème. Merci encore. :) –