Skip to content

Commit

Permalink
-D std-encoding-auto to not force utf8 on stdout/stderr (closes HaxeF…
Browse files Browse the repository at this point in the history
  • Loading branch information
RealyUniqueName committed Oct 7, 2019
1 parent 5d200be commit 9642527
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 9 deletions.
6 changes: 6 additions & 0 deletions src-json/define.json
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,12 @@
"define": "static",
"doc": "Defined if the current target is static."
},
{
"name": "StdEncodingAuto",
"define": "std-encoding-auto",
"doc": "Use default encoding for stdin, stdout and stderr instead of forcing utf-8",
"platforms": ["java", "cs", "python"]
},
{
"name": "Swc",
"define": "swc",
Expand Down
16 changes: 9 additions & 7 deletions src/generators/genpy.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2505,13 +2505,15 @@ module Generator = struct
if has_feature ctx "closure_Array" || has_feature ctx "closure_String" then
spr ctx "from functools import partial as _hx_partial\n";
spr ctx "import sys\n";
spr ctx "try:\n";
spr ctx " if sys.stdout.encoding != 'utf-8':\n";
spr ctx " sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)\n";
spr ctx " if sys.stderr.encoding != 'utf-8':\n";
spr ctx " sys.stderr = open(sys.stderr.fileno(), mode='w', encoding='utf8', buffering=1)\n";
spr ctx "except:\n";
spr ctx " pass\n";
if not (defined com Define.StdEncodingAuto) then begin
spr ctx "try:\n";
spr ctx " if sys.stdout.encoding != 'utf-8':\n";
spr ctx " sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)\n";
spr ctx " if sys.stderr.encoding != 'utf-8':\n";
spr ctx " sys.stderr = open(sys.stderr.fileno(), mode='w', encoding='utf8', buffering=1)\n";
spr ctx "except:\n";
spr ctx " pass\n";
end;
gen_imports ctx;
gen_resources ctx;
gen_types ctx;
Expand Down
6 changes: 4 additions & 2 deletions std/cs/Boot.hx
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@ import Reflect;
@:dox(hide)
class Boot {
@:keep public static function init():Void {
cs.system.Console.InputEncoding = new cs.system.text.UTF8Encoding();
cs.system.Console.OutputEncoding = new cs.system.text.UTF8Encoding();
#if !std_encoding_auto
cs.system.Console.InputEncoding = new cs.system.text.UTF8Encoding();
cs.system.Console.OutputEncoding = new cs.system.text.UTF8Encoding();
#end
cs.Lib.applyCultureChanges();
}
}
2 changes: 2 additions & 0 deletions std/java/Init.hx
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ package java;

@:native("haxe.java.Init") @:keep class Init {
public static function init():Void {
#if !std_encoding_auto
try {
java.lang.System.setOut(new java.io.PrintStream(java.lang.System.out, true, "utf-8"));
java.lang.System.setErr(new java.io.PrintStream(java.lang.System.err, true, "utf-8"));
} catch (e:java.io.UnsupportedEncodingException) {}
#end
}
}

0 comments on commit 9642527

Please sign in to comment.