This finally solves issues with DBSC console codepages, and in
general improves the console codepage switching. When
module_initialized, all the possible encoding INI settings with
regard to possible modifications are set, and that's the
right moment to switch the console codepage in regard to I/O.
CJK glyphs might take more than 1 cell, so then visual issues
can occur, when switching console codepage back and forth. Users
are free to use ini_set(), but any visual issues are then up to
the user responsibility.
static BOOL php_win32_cp_cli_io_setup(void)
{
+ BOOL ret = TRUE;
+
if (PG(input_encoding) && PG(input_encoding)[0]) {
cur_in_cp = php_win32_cp_get_by_enc(PG(input_encoding));
if (!cur_in_cp) {
cur_out_cp = cur_cp;
}
- return SetConsoleCP(cur_in_cp->id) && SetConsoleOutputCP(cur_out_cp->id);
+ if(php_get_module_initialized()) {
+ ret = SetConsoleCP(cur_in_cp->id) && SetConsoleOutputCP(cur_out_cp->id);
+ }
+
+ return ret;
}
PW32CP const struct php_win32_cp *php_win32_cp_do_setup(const char *enc)