我正在使用YUI JavaScriptCompressor来动态压缩JavaScript,并且一个JavaScript文件包含俄语和其他语言字母,除此之外,如果我当前的线程文化设置为hr-HR,则它会从'。'更改小数分隔符。到','!?
以下是克罗地亚文化的例子
Thread.CurrentThread.CurrentCulture = new CultureInfo("hr-HR");
string js = "var dd = 0.9; var tt = 'Хорватия'";
string compressed = JavaScriptCompressor.Compress(js);
和变量压缩的值是:
var dd = 0,9; var tt =“????????”;
小数分隔符已更改,单引号变为双引号,俄语脚本丢失。如果我将当前文化设置为en-US,则压缩为:
var dd = 0.9; var tt =“????????”;
现在小数点分隔符不变,但所有其他问题都存在,即使我将文化设置为俄语(“ru-RU”),俄语脚本仍然作为问号返回。
我完全不解,所以我的问题是我在哪里可以设置编码和其他选项来改变这种行为,只有我看到的可以影响这种压缩的是压缩方法中的参数,但没有一个帮助。
更新1
我查看了源代码并且有一种设置编码的方法,但是YUI Compressor仍在更改我的小数点分隔符,这里是代码:
Thread.CurrentThread.CurrentCulture = new CultureInfo("hr-HR");
string js = "var dd = 0.9; var tt = 'Хорватия'";
JavaScriptCompressor jsc = new JavaScriptCompressor(js, false, Encoding.UTF8, CultureInfo.InvariantCulture);
string compressed = jsc.Compress();
结果是:
var dd = 0,9; var tt =“Хорватия”;
将第4个参数中的文化变为“en-US”也无济于事。
答案 0 :(得分:1)
似乎我使用的1.7.0.0版本中存在一个错误,当我升级到1.7.1.0时,此代码按预期工作:
Thread.CurrentThread.CurrentCulture = new CultureInfo("hr-HR");
string js = "var dd = 0.9; var tt = 'Хорватия'";
JavaScriptCompressor jsc = new JavaScriptCompressor(js, false, Encoding.UTF8, CultureInfo.InvariantCulture);
string compressed = jsc.Compress();
答案 1 :(得分:0)
运行js
的压缩时,请使用标志:
--nomunge