1

私は YUI JavaScriptCompressor を使用して JavaScript をオンザフライで圧縮しています。1 つの 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 に答える