j'ai ma fonction pour convertir une chaîne en hexadécimal:
function encode(str){
str = encodeURIComponent(str).split('%').join('');
return str.toLowerCase();
}
exemple:
守护村子
alert(encode('守护村子'));
la sortie serait:
e5ae88e68aa4e69d91e5ad90
Cela fonctionne sur les caractères chinois. Mais quand je le fais avec des lettres anglaises
alert(encode('Hello World'))
;
il produit:
hello20world
J'ai essayé ceci pour convertir une chaîne en hexadécimal:
function String2Hex(tmp) {
var str = '';
for(var i = 0; i < tmp.length; i++) {
str += tmp[i].charCodeAt(0).toString(16);
}
return str;
}
puis essayé sur les caractères chinois ci-dessus, mais il sort le HEX UTF-8:
5b8862a467515b50
pas l'ANSI Hex:
e5ae88e68aa4e69d91e5ad90
J'ai également cherché à convertir UFT8 en ANSI mais pas de chance. Quelqu'un pourrait m'aider? Merci!
J'ai résolu ce problème en téléchargeant utf8.js
https://github.com/mathiasbynens/utf8.js
puis en utilisant la fonction String2Hex
ci-dessus:
alert(String2Hex(utf8.encode('守护村子')))
;
me donne la sortie que je veux:
e5ae88e68aa4e69d91e5ad90
const myString = "This is my string to be encoded/decoded";
const encoded = new Buffer(myString).toString('hex'); // encoded === 54686973206973206d7920737472696e6720746f20626520656e636f6465642f6465636f646564
const decoded = new Buffer(encoded, 'hex').toString(); // decoded === "This is my string to be encoded/decoded"
cela devrait marcher
var str="some random string";
var result = "";
for (i=0; i<str.length; i++) {
hex = str.charCodeAt(i).toString(16);
result += ("000"+hex).slice(-4);
}