繁体   English   中英

如何在 JavaScript 中使用 UTF8 字符串制作 switch case?

[英]How to make a switch case with UTF8 string in JavaScript?

我有这个功能一直在工作,但只是为了“µ”的可能性,它不起作用:

function obtenirFacteur(multiple){
    var facteur = 1;
    switch(multiple){
        case "T" :
            facteur = 1000000000000;
            break;
        case "G" :
            facteur = 1000000000;
        case "M" :
            facteur = 1000000;
            break;
        case "K" :
            facteur = 1000;
            break;
        case "h" :
            facteur = 100;
            break;
        case "da" :
            facteur = 10;
            break;
        case "d" :
            facteur = 0.1;
            break;
        case "c" :
            facteur = 0.01;
            break;
        case "m" :
            facteur = 0.001;
            break;
        case "μ":
            facteur = 0.000001;
            break;
        case "n" :
            facteur = 0.000000001;
            break;
        case "p" :
            facteur = 0.000000000001;
            break;
        case "f" :
            facteur = 0.000000000000001;
            break;
    }
    return facteur;
}

但它不适用于字符串“µ”。

我的文件在记事本++中没有BOM的UTF8格式,通常适用于所有情况。

var mu = "µ"
console.log("µ".localeCompare(mu, "pl");)

应该没事

我的文件是在记事本++中没有 BOM 的 UTF8,

输入字母后检查它是否保持原样,我猜它在粘贴后会发生变化,您也可以尝试使用带重音的字母á并检查文件是否仍然是没有 BOM 的 UTF-8,如果不是,请将其改回它,如果它变成别的东西,修复它,从那时起就可以了

无法在 Node 的 REPL 中重现您的问题

$ node --version
v8.9.4
$ node
> function test(m) {
... switch(m) {
..... case "μ": return 100; break;
..... default: return 0; break;
..... }
... }
undefined
> test('a')
0
> test('μ')
100
>

即使使用LC_ALL=C

PS:我知道这不是答案,但 SO 还没有让我发表评论。

您从文件中读取的数据已编码,您必须对其进行解码。

使用以下

switch(decodeURIComponent(multiple))

例如

 let decodedData = decodeURIComponent(`%c2%b5`) console.log('decodedData : ', decodedData)

我的解决方案真的不是最好的,但我应该继续,所以:

 function obtenirFacteur(multiple){ var facteur = 1; if(multiple)="µ"){ multiple = mu; } switch(multiple){ case "T" : facteur = 1000000000000; break; case "G" : facteur = 1000000000; case "M" : facteur = 1000000; break; case "K" : facteur = 1000; break; case "h" : facteur = 100; break; case "da" : facteur = 10; break; case "d" : facteur = 0.1; break; case "c" : facteur = 0.01; break; case "m" : facteur = 0.001; break; case "mu": facteur = 0.000001; break; case "n" : facteur = 0.000000001; break; case "p" : facteur = 0.000000000001; break; case "f" : facteur = 0.000000000000001; break; } return facteur; }

当它对你们中的一些人起作用时,它可能只是导航器的一种行为,而不是编程问题。 谢谢你的帮助 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM