@@ -1236,6 +1236,11 @@ static PHP_INI_MH(OnUpdate_mbstring_http_input)
1236
1236
if (MBSTRG (http_input_list )) {
1237
1237
pefree (MBSTRG (http_input_list ), 1 );
1238
1238
}
1239
+ if (SUCCESS == php_mb_parse_encoding_list (PG (input_encoding ), strlen (PG (input_encoding ))+ 1 , & list , & size , 1 TSRMLS_CC )) {
1240
+ MBSTRG (http_input_list ) = list ;
1241
+ MBSTRG (http_input_list_size ) = 0 ;
1242
+ return SUCCESS ;
1243
+ }
1239
1244
MBSTRG (http_input_list ) = NULL ;
1240
1245
MBSTRG (http_input_list_size ) = 0 ;
1241
1246
return SUCCESS ;
@@ -1261,18 +1266,20 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output)
1261
1266
const mbfl_encoding * encoding ;
1262
1267
1263
1268
if (new_value == NULL || new_value_length == 0 ) {
1264
- MBSTRG (http_output_encoding ) = & mbfl_encoding_pass ;
1265
- MBSTRG (current_http_output_encoding ) = & mbfl_encoding_pass ;
1266
- return SUCCESS ;
1267
- }
1268
-
1269
- encoding = mbfl_name2encoding (new_value );
1270
- if (!encoding ) {
1271
- MBSTRG (http_output_encoding ) = & mbfl_encoding_pass ;
1272
- MBSTRG (current_http_output_encoding ) = & mbfl_encoding_pass ;
1273
- return FAILURE ;
1269
+ encoding = mbfl_name2encoding (PG (output_encoding ));
1270
+ if (!encoding ) {
1271
+ MBSTRG (http_output_encoding ) = & mbfl_encoding_pass ;
1272
+ MBSTRG (current_http_output_encoding ) = & mbfl_encoding_pass ;
1273
+ return SUCCESS ;
1274
+ }
1275
+ } else {
1276
+ encoding = mbfl_name2encoding (new_value );
1277
+ if (!encoding ) {
1278
+ MBSTRG (http_output_encoding ) = & mbfl_encoding_pass ;
1279
+ MBSTRG (current_http_output_encoding ) = & mbfl_encoding_pass ;
1280
+ return FAILURE ;
1281
+ }
1274
1282
}
1275
-
1276
1283
MBSTRG (http_output_encoding ) = encoding ;
1277
1284
MBSTRG (current_http_output_encoding ) = encoding ;
1278
1285
return SUCCESS ;
@@ -1285,47 +1292,17 @@ int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, uint new_v
1285
1292
const mbfl_encoding * encoding ;
1286
1293
1287
1294
if (!new_value || new_value_length == 0 || !(encoding = mbfl_name2encoding (new_value ))) {
1288
- switch (MBSTRG (language )) {
1289
- case mbfl_no_language_uni :
1290
- encoding = mbfl_no2encoding (mbfl_no_encoding_utf8 );
1291
- break ;
1292
- case mbfl_no_language_japanese :
1293
- encoding = mbfl_no2encoding (mbfl_no_encoding_euc_jp );
1294
- break ;
1295
- case mbfl_no_language_korean :
1296
- encoding = mbfl_no2encoding (mbfl_no_encoding_euc_kr );
1297
- break ;
1298
- case mbfl_no_language_simplified_chinese :
1299
- encoding = mbfl_no2encoding (mbfl_no_encoding_euc_cn );
1300
- break ;
1301
- case mbfl_no_language_traditional_chinese :
1302
- encoding = mbfl_no2encoding (mbfl_no_encoding_euc_tw );
1303
- break ;
1304
- case mbfl_no_language_russian :
1305
- encoding = mbfl_no2encoding (mbfl_no_encoding_koi8r );
1306
- break ;
1307
- case mbfl_no_language_german :
1308
- encoding = mbfl_no2encoding (mbfl_no_encoding_8859_15 );
1309
- break ;
1310
- case mbfl_no_language_armenian :
1311
- encoding = mbfl_no2encoding (mbfl_no_encoding_armscii8 );
1312
- break ;
1313
- case mbfl_no_language_turkish :
1314
- encoding = mbfl_no2encoding (mbfl_no_encoding_8859_9 );
1315
- break ;
1316
- default :
1317
- encoding = mbfl_no2encoding (mbfl_no_encoding_8859_1 );
1318
- break ;
1319
- }
1320
- }
1295
+ /* falls back to UTF-8 if an unkown encoding name is given */
1296
+ encoding = mbfl_no2encoding (mbfl_no_encoding_utf8 );
1297
+ }
1321
1298
MBSTRG (internal_encoding ) = encoding ;
1322
1299
MBSTRG (current_internal_encoding ) = encoding ;
1323
1300
#if HAVE_MBREGEX
1324
1301
{
1325
1302
const char * enc_name = new_value ;
1326
1303
if (FAILURE == php_mb_regex_set_default_mbctype (enc_name TSRMLS_CC )) {
1327
- /* falls back to EUC-JP if an unknown encoding name is given */
1328
- enc_name = "EUC-JP " ;
1304
+ /* falls back to UTF-8 if an unknown encoding name is given */
1305
+ enc_name = "UTF-8 " ;
1329
1306
php_mb_regex_set_default_mbctype (enc_name TSRMLS_CC );
1330
1307
}
1331
1308
php_mb_regex_set_mbctype (new_value TSRMLS_CC );
@@ -1343,7 +1320,11 @@ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding)
1343
1320
}
1344
1321
if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN
1345
1322
|| stage == PHP_INI_STAGE_RUNTIME ) {
1346
- return _php_mb_ini_mbstring_internal_encoding_set (new_value , new_value_length TSRMLS_CC );
1323
+ if (new_value_length ) {
1324
+ return _php_mb_ini_mbstring_internal_encoding_set (new_value , new_value_length TSRMLS_CC );
1325
+ } else {
1326
+ return _php_mb_ini_mbstring_internal_encoding_set (PG (internal_encoding ), strlen (PG (internal_encoding ))+ 1 TSRMLS_CC );
1327
+ }
1347
1328
} else {
1348
1329
/* the corresponding mbstring globals needs to be set according to the
1349
1330
* ini value in the later stage because it never falls back to the
@@ -1450,8 +1431,8 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output_conv_mimetypes)
1450
1431
PHP_INI_BEGIN ()
1451
1432
PHP_INI_ENTRY ("mbstring.language" , "neutral" , PHP_INI_ALL , OnUpdate_mbstring_language )
1452
1433
PHP_INI_ENTRY ("mbstring.detect_order" , NULL , PHP_INI_ALL , OnUpdate_mbstring_detect_order )
1453
- PHP_INI_ENTRY ("mbstring.http_input" , "pass" , PHP_INI_ALL , OnUpdate_mbstring_http_input )
1454
- PHP_INI_ENTRY ("mbstring.http_output" , "pass" , PHP_INI_ALL , OnUpdate_mbstring_http_output )
1434
+ PHP_INI_ENTRY ("mbstring.http_input" , NULL , PHP_INI_ALL , OnUpdate_mbstring_http_input )
1435
+ PHP_INI_ENTRY ("mbstring.http_output" , NULL , PHP_INI_ALL , OnUpdate_mbstring_http_output )
1455
1436
STD_PHP_INI_ENTRY ("mbstring.internal_encoding" , NULL , PHP_INI_ALL , OnUpdate_mbstring_internal_encoding , internal_encoding_name , zend_mbstring_globals , mbstring_globals )
1456
1437
PHP_INI_ENTRY ("mbstring.substitute_character" , NULL , PHP_INI_ALL , OnUpdate_mbstring_substitute_character )
1457
1438
STD_PHP_INI_ENTRY ("mbstring.func_overload" , "0" ,
@@ -2162,8 +2143,10 @@ PHP_FUNCTION(mb_output_handler)
2162
2143
2163
2144
/* feed the string */
2164
2145
mbfl_string_init (& string );
2165
- string .no_language = MBSTRG (language );
2166
- string .no_encoding = MBSTRG (current_internal_encoding )-> no_encoding ;
2146
+ /* these are not needed. convd has encoding info.
2147
+ string.no_language = MBSTRG(language);
2148
+ string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
2149
+ */
2167
2150
string .val = (unsigned char * )arg_string ;
2168
2151
string .len = arg_string_len ;
2169
2152
mbfl_buffer_converter_feed (MBSTRG (outconv ), & string );
0 commit comments