1

我正在使用 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”),俄语脚本仍然作为问号返回。

我完全感到困惑,所以我的问题是我在哪里可以设置编码和其他选项来改变这种行为,我看到的唯一会影响这种压缩的是 Compress 方法中的参数,但这些都没有帮助。

更新 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”也无济于事。

4

2 回答 2

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();
于 2012-04-26T18:44:50.900 回答
0

当您运行js使用标志的压缩时: --nomunge

于 2019-01-28T07:23:50.970 回答