summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/main.c8
-rw-r--r--tests/basic/bug67988.phpt27
-rw-r--r--tests/basic/encoding.phpt14
3 files changed, 35 insertions, 14 deletions
diff --git a/main/main.c b/main/main.c
index 1312528def..f2b3f392d6 100644
--- a/main/main.c
+++ b/main/main.c
@@ -423,8 +423,6 @@ static PHP_INI_MH(OnUpdateInternalEncoding)
{
if (new_value) {
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
- } else {
- PG(internal_encoding) = SG(default_charset);
}
return SUCCESS;
}
@@ -436,8 +434,6 @@ static PHP_INI_MH(OnUpdateInputEncoding)
{
if (new_value) {
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
- } else {
- PG(input_encoding) = SG(default_charset);
}
return SUCCESS;
}
@@ -449,8 +445,6 @@ static PHP_INI_MH(OnUpdateOutputEncoding)
{
if (new_value) {
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
- } else {
- PG(output_encoding) = SG(default_charset);
}
return SUCCESS;
}
@@ -562,7 +556,7 @@ PHP_INI_BEGIN()
STD_PHP_INI_ENTRY("auto_append_file", NULL, PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateString, auto_append_file, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("auto_prepend_file", NULL, PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateString, auto_prepend_file, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("doc_root", NULL, PHP_INI_SYSTEM, OnUpdateStringUnempty, doc_root, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("default_charset", PHP_DEFAULT_CHARSET, PHP_INI_ALL, OnUpdateString, default_charset, sapi_globals_struct, sapi_globals)
+STD_PHP_INI_ENTRY("default_charset", PHP_DEFAULT_CHARSET, PHP_INI_ALL, OnUpdateString, default_charset, sapi_globals_struct, sapi_globals)
STD_PHP_INI_ENTRY("default_mimetype", SAPI_DEFAULT_MIMETYPE, PHP_INI_ALL, OnUpdateString, default_mimetype, sapi_globals_struct, sapi_globals)
STD_PHP_INI_ENTRY("internal_encoding", NULL, PHP_INI_ALL, OnUpdateInternalEncoding, internal_encoding, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("input_encoding", NULL, PHP_INI_ALL, OnUpdateInputEncoding, input_encoding, php_core_globals, core_globals)
diff --git a/tests/basic/bug67988.phpt b/tests/basic/bug67988.phpt
new file mode 100644
index 0000000000..e1d8e5d7d4
--- /dev/null
+++ b/tests/basic/bug67988.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Bug #67988 (htmlspecialchars() does not respect default_charset specified by ini_set)
+--INI--
+default_charset=UTF-8
+--FILE--
+<?php
+ini_set('default_charset', 'cp1252');
+
+var_dump(ini_get('default_charset'));
+var_dump(ini_get('internal_encoding'));
+var_dump(ini_get('input_encoding'));
+var_dump(ini_get('output_encoding'));
+
+var_dump(htmlentities("\xA3", ENT_HTML5));
+var_dump(htmlentities("\xA3", ENT_HTML5, 'cp1252'));
+
+var_dump(bin2hex(html_entity_decode("&pound;", ENT_HTML5)));
+var_dump(bin2hex(html_entity_decode("&pound;", ENT_HTML5, 'cp1252')));
+--EXPECT--
+string(6) "cp1252"
+string(0) ""
+string(0) ""
+string(0) ""
+string(7) "&pound;"
+string(7) "&pound;"
+string(2) "a3"
+string(2) "a3"
diff --git a/tests/basic/encoding.phpt b/tests/basic/encoding.phpt
index d9f7e0caad..c513cbfa79 100644
--- a/tests/basic/encoding.phpt
+++ b/tests/basic/encoding.phpt
@@ -14,14 +14,14 @@ var_dump(ini_get('input_encoding'));
var_dump(ini_get('internal_encoding'));
var_dump(ini_get('output_encoding'));
-var_dump(ini_set('input_encoding', 'ISO-8859-1'));
-var_dump(ini_set('internal_encoding', 'ISO-8859-1'));
-var_dump(ini_set('output_encoding', 'ISO-8859-1'));
+var_dump(ini_set('input_encoding', 'EUC-JP'));
+var_dump(ini_set('internal_encoding', 'EUC-JP'));
+var_dump(ini_set('output_encoding', 'EUC-JP'));
var_dump(ini_get('input_encoding'));
var_dump(ini_get('internal_encoding'));
var_dump(ini_get('output_encoding'));
---EXPECTF--
+--EXPECT--
string(5) "UTF-8"
string(0) ""
string(0) ""
@@ -34,6 +34,6 @@ string(0) ""
string(0) ""
string(0) ""
string(0) ""
-string(10) "ISO-8859-1"
-string(10) "ISO-8859-1"
-string(10) "ISO-8859-1"
+string(6) "EUC-JP"
+string(6) "EUC-JP"
+string(6) "EUC-JP"