Я пытаюсь преобразовать строку юникода в шестнадцатеричное представление в javascript.Javascript: Unicode string to hex
Это то, что у меня есть:
function convertFromHex(hex) {
var hex = hex.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
function convertToHex(str) {
var hex = '';
for(var i=0;i<str.length;i++) {
hex += ''+str.charCodeAt(i).toString(16);
}
return hex;
}
Но если не будет работать на Юникод, как китайские;
Вход: 漢字
Выход:? ªo "[W
Любые идеи Можно ли это сделать в JavaScript
Спасибо, только один вопрос, хотя (может быть немой один ..) - как вы получаете \ u6f22 \ u5b57 из 漢字 в javascript? Самое близкое к функции escape(), но это использует% - я предполагаю, что регулярное выражение может быть использовано для замены% с помощью /, но функция escape() также устарела. EncodeURI и encodeURIComponent дают разные результаты. Есть идеи? – Wesley
'' \ u6f22 \ u5b57 "' - это escape-форма Unicode литерала '' 漢字 "' так же, как '\ n' является символом новой строки. Я склонен использовать их, чтобы избежать двусмысленности и избежать проблем с кодировкой символов. Подробнее см. [Спецификация] (http://www.ecma-international.org/publications/standards/Ecma-262.htm). Чтобы сгенерировать их, вы сами меняете вышеуказанный символ '(" 000 "+ hex) .slice (-4)' to '" \\ u "+ (" 000 "+ hex) .slice (-4)'. Выражение '' \ u6f22 \ u5b57 "===" 漢字 "' оценивается как true, поскольку после разбора кода они одинаковы. – McDowell
Спасибо, 1 проблема, с которой я сталкиваюсь, иногда hex.match (//. {1,4}/g); ничего не соответствует. (ошибка: null не является объектом (оценка hexes.length)) - знаете ли вы, что может быть причиной? – Wesley