ก่อนอื่นพูดคุยเรื่องไร้สาระ^_^
การคัดลอกรหัสมีดังนี้:
-
* เปลี่ยนอักขระความกว้างเต็มรูปแบบ
-
ฟังก์ชั่น todbc (str) {
var result = "";
var len = str.length;
สำหรับ (var i = 0; i <len; i ++)
-
var ccode = str.charcodeat (i);
// ความแตกต่างระหว่างมุมเต็มและครึ่ง (ยกเว้นพื้นที่): 65248 (ทศนิยม)
ccode = (ccode> = 0x0021 && ccode <= 0x007e)? (ccode + 65248): ccode;
// พื้นที่ประมวลผล
ccode = (ccode == 0x0020)? 0x03000: ccode;
ผลลัพธ์ += String.FromCharcode (ccode);
-
ผลการกลับมา;
-
-
* เปลี่ยนอักขระครึ่งความกว้าง
-
ฟังก์ชั่น tosbc (str) {
var result = "";
var len = str.length;
สำหรับ (var i = 0; i <len; i ++)
-
var ccode = str.charcodeat (i);
// ความแตกต่างระหว่างมุมเต็มและครึ่ง (ยกเว้นพื้นที่): 65248 (ทศนิยม)
ccode = (ccode> = 0xff01 && ccode <= 0xff5e)? (ccode - 65248): ccode;
// พื้นที่ประมวลผล
ccode = (ccode == 0x03000)? 0x0020: ccode;
ผลลัพธ์ += String.FromCharcode (ccode);
-
ผลการกลับมา;
-
จุดรู้
ด้วยการเปรียบเทียบอักขระครึ่งความกว้างกับอักขระเต็มรูปแบบ (อักขระ ASCII) เราสามารถพบได้ว่าตัวละคร ASCII มีช่วงความกว้างเต็มและตัวอักษรครึ่งความกว้างคือ: 0x20 ~ 0x7e
ตัวอย่างเช่น:
ความแตกต่างระหว่างสัญลักษณ์ครึ่งความกว้างและความกว้างเต็มรูปแบบ
#0x00230xff030xfee0
? 0x003f0xff1f0xfee0
Space 0x00200x030000x2fe0
ยกเว้นช่องว่างในตัวละครอื่นทั้งหมดและความกว้างครึ่งแตกต่างกัน: 0xffe0
ดังนั้นในการแปลงอักขระของความกว้างเต็มรูปแบบและครึ่งความกว้างจำเป็นต้องมีการประมวลผลพิเศษของช่องว่าง
ตัวอย่างเช่น:
เต็มความกว้าง = ครึ่งความกว้าง + 0xfee0
Half-Width = Full-Width-0xffe0