#javascript #unicode
#javascript #юникод
Вопрос:
В приведенном ниже коде JavaScript первый выводит правильный символ (греческую гамму), а второй выводит строку ‘u03b8’.
var full_uni='u03b8';
var part_uni='\' 'u03b8';
console.log(full_uni);
console.log(part_uni);
Мои вопросы
- Почему?
- Как я могу печатать
full_uni
как ‘ u03b8’ (или аналогичный) и / или печататьpart_uni
как правильный символ?
Комментарии:
1.
var part_uni='u03' 'b8';
это приведет к ошибке2. @GovindSinghNagarkoti — да, это так! Я изменил его так, чтобы он работал.
3. итак, это ваш ответ, оба они разные
4. Обратите внимание, что у вас есть
\
во втором? Неудивительно,\u03b8
что выводится какu03b8
!5. @NiettheDarkAbsol — Мне пришлось добавить вторую обратную косую черту, иначе первая не попадала бы в закрывающую одинарную кавычку, и она горько жаловалась. Возможно, я плохо сформулировал вопрос. Может быть, мне следовало спросить: «Как мне программно генерировать символы Юникода и как я могу преобразовать юникод обратно в шестнадцатеричный для дальнейших манипуляций?»
Ответ №1:
Хотя нет встроенного способа перехода между ними, вы можете создавать функции для этого.
function decodeUnicodeSequence(str) {
return str.replace(/\u([0-9a-f]{4})/ig,function(_,hex) {
return String.fromCharCode(parseInt(hex,16));
});
}
function encodeUnicodeSequence(str) {
return str.replace(/[u00a0-uffff]/g,function(chr) {
return "\u" ("00" chr.charCodeAt(0).toString(16)).slice(-4);
});
}
Комментарии:
1. Я наполовину ожидал, что в качестве ответа будет «невозможно». Странно, что в langugage нет встроенного способа преобразования между ними. Однако спасибо за альтернативный код.
2. @garethTheRed Я буквально никогда не видел никакой необходимости конвертировать между ними раньше. Я знаю, что языки иногда имеют неясные функции, но что-то вроде этого просто так … ненужно, большую часть времени. Кроме того, если бы в родном языке было все, для чего нам понадобилась бы возможность определять наши собственные функции? 😉
3. Для онлайн-инструмента, который преобразует между ними, см. JavaScript escapes . Он использует библиотеку JavaScript jsesc для создания максимально компактного экранированного вывода.