如何在JavaScript中使用UTF8字符串生成开关大小写?

如何在JavaScript中使用UTF8字符串生成开关大小写?,javascript,utf-8,switch-statement,Javascript,Utf 8,Switch Statement,我有这个功能,它一直在工作,但只是为了“µ”的可能性,它不工作: 函数obtenirfacter(多个){ var因子=1; 交换机(多个){ 案例“T”: 因子=1000000000000; 打破 案例“G”: 因子=100000000; 案例“M”: 因子=1000000; 打破 案例“K”: 因子=1000; 打破 案例“h”: 因子=100; 打破 案件“da”: 因子=10; 打破 案例“d”: 因子=0.1; 打破 案例“c”: 因子=0.01; 打破 案例“m”: 因子=0.001

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

函数obtenirfacter(多个){
var因子=1;
交换机(多个){
案例“T”:
因子=1000000000000;
打破
案例“G”:
因子=100000000;
案例“M”:
因子=1000000;
打破
案例“K”:
因子=1000;
打破
案例“h”:
因子=100;
打破
案件“da”:
因子=10;
打破
案例“d”:
因子=0.1;
打破
案例“c”:
因子=0.01;
打破
案例“m”:
因子=0.001;
打破
案例“μ”:
因子=0.000001;
打破
案例“n”:
facteur=0.000000001;
打破
案例“p”:
facteur=0.000000000001;
打破
案例“f”:
facteur=0.000000000000001;
打破
}
返回事实陈述人;
}
但它不适用于字符串“µ”

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

var mu = "µ"
console.log("µ".localeCompare(mu, "pl");)
应该没问题

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

输入字母后检查其是否保持不变,我猜粘贴后会发生变化
您也可以尝试使用重音字母,如
á
,检查文件是否仍然是没有BOM的UTF-8,如果不是,则将其更改回UTF-8,如果它变成了其他内容,则修复该字母,从那时起就可以了无法在节点的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\u ALL=C

PS:我知道这不是一个答案,但是现在还不让我评论

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

使用以下命令

switch(decodeURIComponent(multiple))
e、 g

let decodedData=decodeURIComponent(`%c2%b5`)

console.log('decodedata:',decodedata)
我的解决方案确实不是最好的,但我应该继续,所以:

函数obtenirfacter(多个){
var因子=1;
如果(倍数)=“µ”){
倍数=mu;
}
交换机(多个){
案例“T”:
因子=1000000000000;
打破
案例“G”:
因子=100000000;
案例“M”:
因子=1000000;
打破
案例“K”:
因子=1000;
打破
案例“h”:
因子=100;
打破
案件“da”:
因子=10;
打破
案例“d”:
因子=0.1;
打破
案例“c”:
因子=0.01;
打破
案例“m”:
因子=0.001;
打破
案例“mu”:
因子=0.000001;
打破
案例“n”:
facteur=0.000000001;
打破
案例“p”:
facteur=0.000000000001;
打破
案例“f”:
facteur=0.000000000000001;
打破
}
返回事实陈述人;

}
文件保存是个问题。如果你将它粘贴到Chrome的开发者工具控制台,然后尝试测试该函数,它不会有任何问题-它会按预期工作。你如何调用该函数?调用者从哪里获得参数值?这似乎是检查导航器的最佳方法。