簡體   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