Unicode value uxxxx
-
26-09-2019 - |
سؤال
لم أفعل هذا من قبل ولم أكن متأكدًا من سبب إخراجها من السمعة �
تشفير الطابع. أي أفكار حول كيفية إخراج الأحرف كما ينبغي (ASCII+UNICODE)؟ أظن \u0041
-\u005A
يجب أن تطبع A-Z
في UTF-8 ، والتي تقارير Firefox هي ترميز الصفحة.
var c = new Array("F","E","D","C","B","A",9,8,7,6,5,4,3,2,1,0);
var n = 0;
var d = "";
var o = "";
for (var i=16;i--;){
for (var j=16;j--;){
for (var k=16;k--;){
for (var l=16;l--;){
d = c[i].toString()
+ c[j].toString()
+ c[k].toString()
+ c[l].toString();
o += ( ++n + ": "
+ d + " = "
+ String.fromCharCode("\\u" + d)
+ "\n<br />" );
if(n>=500){i=j=k=l=0;} // stop early
}
}
}
}
document.write(o);
المحلول
ال .fromCharCode()
الوظيفة تأخذ رقمًا وليس سلسلة. لا يمكنك تجميع سلسلة من هذا القبيل وتتوقع من المحلل أن يفعل ما تعتقد أنه سيفعله ؛ هذه ليست الطريقة التي تعمل بها اللغة.
يمكنك تقديم الكود الخاص بك لصنع سلسلة (بدون " u") من رقم سداسي عشري ، والاتصال
var n = parseInt(hexString, 16);
للحصول على القيمة. ثم يمكنك الاتصال .fromCharCode()
مع الذي - التي القيمة.
نصائح أخرى
مقتطف مفيد لاستبدال جميع الأحرف الخاصة التي ترميزها Unicode في النص هي:
var rawText = unicodeEncodedText.replace(
/\\u([0-9a-f]{4})/g,
function (whole, group1) {
return String.fromCharCode(parseInt(group1, 16));
}
);
استخدام replace
, fromCharCode
و parseInt
إذا كنت تريد استخدام \unnnn
بناء الجملة لإنشاء أحرف ، عليك القيام بذلك في سلسلة حرفية في الكود. إذا كنت ترغب في القيام بذلك بشكل ديناميكي ، فيجب عليك القيام بذلك في سلسلة حرفية يتم تقييمها في وقت التشغيل:
var hex = "0123456789ABCDEF";
var s = "";
for (var i = 65; i <= 90; i++) {
var hi = i >> 4;
var lo = i % 16;
var code = "'\\u00" + hex[hi] + hex[lo] + "'";
var char = eval(code);
s += char;
}
document.write(s);
بالطبع ، مجرد استخدام String.fromCharCode(i)
سيكون أسهل بكثير ...