1--TEST-- 2default_charset and htmlentities/htmlspecialchars/html_entity_decode 3--INI-- 4default_charset=UTF-8 5internal_encoding= 6input_encoding= 7output_encoding= 8--FILE-- 9<?php 10echo "*** Default php.ini value ***\n"; 11var_dump(ini_get('default_charset'), 12 ini_get('internal_encoding'), 13 ini_get('input_encoding'), 14 ini_get('output_encoding') 15 ); 16 17 18echo "*** Runtime change of default_charset ***\n"; 19var_dump(ini_set('default_charset', 'cp1252')); 20 21echo "*** Test with updated default_charset ***\n"; 22var_dump(ini_get('default_charset'), 23 ini_get('internal_encoding'), 24 ini_get('input_encoding'), 25 ini_get('output_encoding') 26 ); 27 28var_dump(htmlentities("\xA3", ENT_HTML5)); 29var_dump(htmlentities("\xA3", ENT_HTML5, 'cp1252')); 30 31var_dump(bin2hex(html_entity_decode("£", ENT_HTML5))); 32var_dump(bin2hex(html_entity_decode("£", ENT_HTML5, 'cp1252'))); 33 34// Set internal_encoding to empty and try again 35echo "*** Change internal_encoding to empty ***\n"; 36var_dump(ini_set('internal_encoding', '')); 37var_dump(ini_get('default_charset'), 38 ini_get('internal_encoding'), 39 ini_get('input_encoding'), 40 ini_get('output_encoding') 41 ); 42 43var_dump(htmlentities("\xA3", ENT_HTML5)); 44var_dump(htmlentities("\xA3", ENT_HTML5, 'cp1252')); 45var_dump(bin2hex(html_entity_decode("£", ENT_HTML5))); 46var_dump(bin2hex(html_entity_decode("£", ENT_HTML5, 'cp1252'))); 47 48echo "*** Update input/output_encoding ***\n"; 49var_dump(ini_set('input_encoding', 'ISO-8859-1')); 50var_dump(ini_set('output_encoding', 'ISO-8859-1')); 51var_dump(ini_get('default_charset'), 52 ini_get('internal_encoding'), 53 ini_get('input_encoding'), 54 ini_get('output_encoding') 55 ); 56 57// Should not be affected 58var_dump(htmlentities("\xA3", ENT_HTML5)); 59var_dump(htmlentities("\xA3", ENT_HTML5, 'cp1252')); 60var_dump(bin2hex(html_entity_decode("£", ENT_HTML5))); 61var_dump(bin2hex(html_entity_decode("£", ENT_HTML5, 'cp1252'))); 62 63echo "Done\n"; 64 65?> 66--EXPECT-- 67*** Default php.ini value *** 68string(5) "UTF-8" 69string(0) "" 70string(0) "" 71string(0) "" 72*** Runtime change of default_charset *** 73string(5) "UTF-8" 74*** Test with updated default_charset *** 75string(6) "cp1252" 76string(0) "" 77string(0) "" 78string(0) "" 79string(7) "£" 80string(7) "£" 81string(2) "a3" 82string(2) "a3" 83*** Change internal_encoding to empty *** 84string(0) "" 85string(6) "cp1252" 86string(0) "" 87string(0) "" 88string(0) "" 89string(7) "£" 90string(7) "£" 91string(2) "a3" 92string(2) "a3" 93*** Update input/output_encoding *** 94string(0) "" 95string(0) "" 96string(6) "cp1252" 97string(0) "" 98string(10) "ISO-8859-1" 99string(10) "ISO-8859-1" 100string(7) "£" 101string(7) "£" 102string(2) "a3" 103string(2) "a3" 104Done 105