#46467 [NEW]: htmlentities() does not use default_charset when mbstring.so is loaded

From: Date: Sun, 02 Nov 2008 22:46:38 +0000
Subject: #46467 [NEW]: htmlentities() does not use default_charset when mbstring.so is loaded
Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-1299@lists.php.net to get a copy of this message
From: hostmaster at uuism dot net Operating system: Fedora Core 4 PHP version: 5.2.6 PHP Bug Type: *Languages/Translation Bug description: htmlentities() does not use default_charset when mbstring.so is loaded Description: ------------ When I run test scripts ext/standard/tests/strings/htmlentitiesXX.phpt where XX is 10, 11, and 13, the tests fail when mbstring.so is loaded and pass when mbstring.so is not loaded. If I change the test script INI value for mbstring.internal_encoding to the default_charset, the test will pass. Also, they will pass of the $charset is included in the command htmlentities. I am using the php.ini-recommended with extension_dir = "/usr/local/src/php-5.2.6/modules" I placed the php.ini in directory /usr/local/src/php-5.2.6/sapi/cli so sapi/cli/php would use it. All the php.ini values for mbstring are commented out: # grep mbstring /usr/local/src/php-5.2.6/sapi/cli/php.ini ;extension=php_mbstring.dll [mbstring] ;mbstring.language = Japanese ;mbstring.internal_encoding = EUC-JP ;mbstring.http_input = auto ;mbstring.http_output = SJIS ; mbstring.internal_encoding setting. Input chars are ;mbstring.encoding_translation = Off ;mbstring.detect_order = auto ;mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ;mbstring.func_overload = 0 ;mbstring.strict_encoding = Off ; With mbstring support this will automatically be converted into the encoding ; given by corresponding encode setting. When empty mbstring.internal_encoding Here is the run without mbstring.so loaded: ]# TEST_PHP_EXECUTABLE=sapi/cli/php sapi/cli/php ./run-tests.php ext/standard/tests/strings/htmlentities*phpt ===================================================================== PHP : sapi/cli/php PHP_SAPI : cli PHP_VERSION : 5.2.6 ZEND_VERSION: 2.2.0 PHP_OS : Linux - Linux host.uuserver.net 2.6.20.1 #16 SMP Thu Nov 8 14:19:44 EST 2007 i686 INI actual : /usr/local/src/php-5.2.6/sapi/cli/php.ini More .INIs : /etc/php.d/mysql.ini,/etc/php.d/mysqli.ini CWD : /usr/local/src/php-5.2.6 Extra dirs : ===================================================================== Running selected tests. [snip] PASS htmlentities() test 10 (default_charset / cp1252) [ext/standard/tests/strings/htmlentities10.phpt] PASS htmlentities() test 11 (default_charset / ISO-8859-15) [ext/standard/tests/strings/htmlentities11.phpt] PASS htmlentities() test 12 (default_charset / ISO-8859-1) [ext/standard/tests/strings/htmlentities12.phpt] PASS htmlentities() test 13 (default_charset / EUC-JP) [ext/standard/tests/strings/htmlentities13.phpt] [snip] ===================================================================== Number of tests : 20 14 Tests skipped : 6 ( 30.0%) -------- Tests warned : 0 ( 0.0%) ( 0.0%) Tests failed : 0 ( 0.0%) ( 0.0%) Tests passed : 14 ( 70.0%) (100.0%) --------------------------------------------------------------------- Time taken : 1 seconds ===================================================================== Here is the run WITH mbstring.so loaded: # TEST_PHP_EXECUTABLE=sapi/cli/php sapi/cli/php ./run-tests.php ext/standard/tests/strings/htmlentities*phpt ===================================================================== PHP : sapi/cli/php PHP_SAPI : cli PHP_VERSION : 5.2.6 ZEND_VERSION: 2.2.0 PHP_OS : Linux - Linux host.uuserver.net 2.6.20.1 #16 SMP Thu Nov 8 14:19:44 EST 2007 i686 INI actual : /usr/local/src/php-5.2.6/sapi/cli/php.ini More .INIs : /etc/php.d/mbstring.ini,/etc/php.d/mysql.ini,/etc/php.d/mysqli.ini CWD : /usr/local/src/php-5.2.6 Extra dirs : ===================================================================== Running selected tests. [snip] FAIL htmlentities() test 10 (default_charset / cp1252) [ext/standard/tests/strings/htmlentities10.phpt] FAIL htmlentities() test 11 (default_charset / ISO-8859-15) [ext/standard/tests/strings/htmlentities11.phpt] PASS htmlentities() test 12 (default_charset / ISO-8859-1) [ext/standard/tests/strings/htmlentities12.phpt] FAIL htmlentities() test 13 (default_charset / EUC-JP) [ext/standard/tests/strings/htmlentities13.phpt] [snip] ===================================================================== Number of tests : 20 20 Tests skipped : 0 ( 0.0%) -------- Tests warned : 3 ( 15.0%) ( 15.0%) Tests failed : 3 ( 15.0%) ( 15.0%) Tests passed : 14 ( 70.0%) ( 70.0%) --------------------------------------------------------------------- Time taken : 2 seconds ===================================================================== ===================================================================== FAILED TEST SUMMARY --------------------------------------------------------------------- [snip] htmlentities() test 10 (default_charset / cp1252) [ext/standard/tests/strings/htmlentities10.phpt] htmlentities() test 11 (default_charset / ISO-8859-15) [ext/standard/tests/strings/htmlentities11.phpt] htmlentities() test 13 (default_charset / EUC-JP) [ext/standard/tests/strings/htmlentities13.phpt] [snip] ===================================================================== Thanks for looking into this problem. Jim Reproduce code: --------------- <?php ini_set('mbstring.internal_encoding','cp1252'); ini_set('default_charset','cp1252'); print ini_get('default_charset')."\n"; var_dump(htmlentities("\x82\x86\x99\x9f", ENT_QUOTES, '')); var_dump(htmlentities("\x82\x86\x99\x9f", ENT_QUOTES, 'cp1252')); ini_set('mbstring.internal_encoding','pass'); ini_set('default_charset','cp1252'); print ini_get('default_charset')."\n"; var_dump(htmlentities("\x82\x86\x99\x9f", ENT_QUOTES, '')); var_dump(htmlentities("\x82\x86\x99\x9f", ENT_QUOTES, 'cp1252')); ?> Expected result: ---------------- cp1252 string(28) "&sbquo;&dagger;&trade;&Yuml;" string(28) "&sbquo;&dagger;&trade;&Yuml;" cp1252 string(28) "&sbquo;&dagger;&trade;&Yuml;" string(28) "&sbquo;&dagger;&trade;&Yuml;" Actual result: -------------- cp1252 string(28) "&sbquo;&dagger;&trade;&Yuml;" string(28) "&sbquo;&dagger;&trade;&Yuml;" cp1252 string(4) "" string(28) "&sbquo;&dagger;&trade;&Yuml;" -- Edit bug report at http://bugs.php.net/?id=46467&edit=1 -- Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=46467&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=46467&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=46467&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=46467&r=fixedcvs Fixed in CVS and need be documented: http://bugs.php.net/fix.php?id=46467&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=46467&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=46467&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=46467&r=needscript Try newer version: http://bugs.php.net/fix.php?id=46467&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=46467&r=support Expected behavior: http://bugs.php.net/fix.php?id=46467&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=46467&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=46467&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=46467&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=46467&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=46467&r=dst IIS Stability: http://bugs.php.net/fix.php?id=46467&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=46467&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=46467&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=46467&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=46467&r=mysqlcfg

« previous php.doc.bugs (#1299) next »