#46467 [NEW]: htmlentities() does not use default_charset when mbstring.so is loaded
| From: | hostmaster at uuism dot net | 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) "‚†™Ÿ"
string(28) "‚†™Ÿ"
cp1252
string(28) "‚†™Ÿ"
string(28) "‚†™Ÿ"
Actual result:
--------------
cp1252
string(28) "‚†™Ÿ"
string(28) "‚†™Ÿ"
cp1252
string(4) ""
string(28) "‚†™Ÿ"
--
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