Codez d'abord, puis dites des bêtises^_^
/**
* Convertir les caractères pleine chasse
*/
fonction toDBC(str){
var résultat = "";
var len = str.length;
pour(var i=0;i
{
var cCode = str.charCodeAt(i);
//La différence entre pleine largeur et demi-largeur (sauf les espaces) : 65248 (décimal)
cCode = (cCode>=0x0021 && cCode<=0x007E)?(cCode 65248) : cCode;
//Gérer les espaces
cCode = (cCode==0x0020)?0x03000:cCode;
résultat = String.fromCharCode(cCode);
>
Résultat de retour ;
>
/**
* Convertir les caractères demi-chasse
*/
fonction toSBC(str){
var résultat = "";
var len = str.length;
pour(var i=0;i
{
var cCode = str.charCodeAt(i);
//La différence entre pleine largeur et demi-largeur (sauf les espaces) : 65248 (décimal)
cCode = (cCode>=0xFF01 && cCode<=0xFF5E)?(cCode - 65248) : cCode;
//Gérer les espaces
cCode = (cCode==0x03000)?0x0020:cCode;
résultat = String.fromCharCode(cCode);
>
Résultat de retour ;
>
Points de connaissances
En comparant les caractères demi-chasse et les caractères pleine chasse (caractères ASCII), nous pouvons constater qu'il existe des plages de caractères ASCII pleine chasse et demi-chasse : 0x20~0x7E.
Par exemple :
Les symboles demi-largeur et pleine largeur diffèrent
#0x0023 0xFF03 0xFEE0
? 0x003F 0xFF1F 0xFEE0
Espace 0x0020 0x03000 0x2FE0
À l'exception des espaces, la différence entre les caractères pleine chasse et demi-chasse est : 0xFFE0
Par conséquent, lors de la conversion de caractères pleine chasse et demi-chasse, un traitement spécial des espaces est requis.
Par exemple :
Pleine largeur = demi-largeur 0xFEE0
Demi-largeur = pleine largeur - 0xFFE0