Pertama, lalu bicara omong kosong^_^
Salinan kode adalah sebagai berikut:
/**
* Ubah karakter lebar penuh
*/
fungsi todbc (str) {
var result = "";
var len = str.length;
untuk (var i = 0; i <len; i ++)
{
var ccode = str.charcodeat (i);
// Perbedaan antara penuh dan setengah sudut (kecuali ruang): 65248 (desimal)
ccode = (ccode> = 0x0021 && ccode <= 0x007e)? (CCODE + 65248): CCODE;
// Ruang pemrosesan
ccode = (ccode == 0x0020)? 0x03000: ccode;
hasil += string.fromCharCode (ccode);
}
hasil pengembalian;
}
/**
* Ubah karakter setengah lebar
*/
fungsi tosbc (str) {
var result = "";
var len = str.length;
untuk (var i = 0; i <len; i ++)
{
var ccode = str.charcodeat (i);
// Perbedaan antara penuh dan setengah sudut (kecuali ruang): 65248 (desimal)
ccode = (ccode> = 0xff01 && ccode <= 0xff5e)? (CCODE - 65248): CCODE;
// Ruang pemrosesan
ccode = (ccode == 0x03000)? 0x0020: ccode;
hasil += string.fromCharCode (ccode);
}
hasil pengembalian;
}
Poin Pengetahuan
Dengan membandingkan karakter setengah lebar dengan karakter lebar penuh (karakter ASCII), kita dapat menemukan bahwa kisaran karakter ASCII dengan karakter lebar penuh dan setengah lebar adalah: 0x20 ~ 0x7e.
Misalnya:
Perbedaan antara simbol setengah lebar dan lebar penuh
#0x00230XFF030XFEE0
? 0x003f0xff1f0xfee0
Ruang 0x00200x030000x2fe0
Kecuali spasi, dalam karakter lain, seluruh dan setengah lebar berbeda: 0xffe0
Oleh karena itu, dalam konversi karakter selebar dan setengah lebar, pemrosesan ruang khusus diperlukan.
Misalnya:
Lebar penuh = setengah lebar + 0xfee0
Setengah lebar = lebar penuh-0xffe0