2013-05-02 239 views
2

我目前正在一個網站上有兩個版本,一個作爲utf-8的美國網站和一個作爲Shift JIS的日語版本。該網站使用Perl生成。將JS反斜槓轉義字符轉換爲不轉義字符Shift JIS

問題:

我服務的JavaScript類似於以下內容。

var text = "test \"quote\""; 

在日語網站上,哪個返回錯誤「Uncaught SyntaxError:意外的標識符」。這是因爲反斜槓正被轉換爲一個拉長的反斜槓字符\,而該反斜槓字符不被視爲轉義字符,因此正在打破這一行。

我似乎無法找到任何人遇到這個問題,這使我懷疑我們的網站沒有什麼根本錯誤。有沒有人遇到類似的情況,並找到解決方案?

非常感謝

+1

沒有你的Perl代碼就無法幫助你。 – daxim 2013-05-02 12:03:19

+0

那麼這行是原始JS作爲嵌入其他幾千行代碼中的梅森模板的一部分。 – 2013-05-02 13:09:43

+0

您應該至少向我們展示編碼的部分代碼。如果它是由梅森完成的,告訴我們你是如何設置梅森來做到這一點的。 – dolmen 2013-05-02 15:25:30

回答

1

我這裏找到一些有用的信息:

Why browser is showing different back slash for a email validation regex. How to prevent that?

導致我這個鐓黑客:

var text = "test ¥"quote¥""; 

這完美的作品。現在,顯然這不是做這件事的方法,但它可以使其他開發人員在站點上測試其他JS交互,同時我專注於將此代碼重構爲不依賴字符轉義的東西。我希望這些信息在某些時候可以幫助別人!

+1

我遇到了同樣的情況,但是在相反的方向上,Shift_JIS編碼的Simulink文件中的「\」變成了「¥」,最常見的是「\ n」變成了「¥n」(這是一個字面上的\ n,而不是換行符,但如果不是「轉換」,則Simulink會解釋它)。這發生在我的案例中使用'iconv -f shift_jis -t utf8 '。 – 2015-07-16 07:55:27