Yahoo YUI Compressor UTF-8和Culture支持

时间:2012-04-26 16:56:19

标签: .net utf-8 cultureinfo yui-compressor

我正在使用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”也无济于事。

2 个答案:

答案 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