2017-07-07 6 views
1

J'ai une fonction Java que je dois convertir en JavaScript et qui contient cette ligne:équivalent des getBytes de Java en JavaScript pour encodages différents

byte[] bytes = ttText.getBytes(Charset.forName("Cp1250")); 

ttText est String. Je dois faire la même chose. J'ai besoin d'obtenir les octets d'une chaîne codée en Cp1250 (windows-1250), modifier les octets, puis le convertir en chaîne. Existe-t-il un moyen de le faire en JavaScript?

J'ai découvert par exemple TextEncoder et TextDecoder mais la prise en charge de codages différents de UTF-8 a été abandonnée il y a un certain temps.

Répondre

0

Essayez ceci. https://mths.be/windows-1250

Cela semble prometteur. Il fournit un support à la fois pour l'encodage et le décodage. Tout ce que vous avez à faire est d'ajouter la bibliothèque et d'utiliser les méthodes. var encodedData = windows1250.encode (texte);

+0

Merci, j'ai trouvé cela aussi mais c'est seulement pour l'encodage/décodage. J'ai besoin d'obtenir les octets réels pour les modifier. Encoder en octets -> modifier octets -> décoder en arrière. – samuelg0rd0n

+0

J'ai une question. Si vous modifiez les octets codés, vous n'obtiendrez pas le même résultat après le décodage. –

+0

Oui, bien sûr, je sais. C'est pourquoi j'ai besoin de les modifier. J'ai besoin d'appliquer une certaine fonction de mappage à ces octets pour obtenir un résultat différent. – samuelg0rd0n

0
var cp1250 = '€ ‚ „…†‡ ‰Š‹ŚŤŽŹ ‘’“”•–— ™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙'; 

function encodeCP1250(text) { 
    var buf = []; 
    for (var i = 0; i < text.length; i++) { 
    var code = cp1250.indexOf(text[i]); 
    if (code >= 0) { 
     code += 128; 
    } else { 
     code = text.charCodeAt(i); 
    } 
    buf.push(code > 255 ? 32 : code); 
    } 
    return buf; 
} 

function decodeCP1250(buf) { 
    var text = ''; 
    for (var i = 0; i < buf.length; i++) { 
    var code = buf[i]; 
    text += code > 127 ? cp1250[code - 128] : String.fromCharCode(code); 
    } 
    return text; 
} 

var buf = encodeCP1250('AÁÂĂÄ'); // [65, 193, 194, 195, 196] 
var text = decodeCP1250(buf); // 'AÁÂĂÄ'