먼저, 말도 안되는 말^_^
코드 사본은 다음과 같습니다.
/**
* 전체 너비 문자를 돌립니다
*/
기능 todbc (str) {
var result = "";
var len = str.length;
for (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;
for (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
공간 0x00200x030000x2fe0
공간을 제외하고 다른 캐릭터에서는 전체와 반 더 윈도가 다릅니다. 0xffe0
따라서, 전체 폭과 반폭의 캐릭터 변환에서 공간의 특수 처리가 필요합니다.
예를 들어:
전체 폭 = 반 넓이 + 0xfee0
반 윈드 = 전체 폭-0xffe0