codeguy / php-the-right-way

An easy-to-read, quick reference for PHP best practices, accepted coding standards, and links to authoritative tutorials around the Web
https://www.phptherightway.com
Other
9.06k stars 3.24k forks source link

The advice regarding mb_internal_encoding #867

Open iio7 opened 3 years ago

iio7 commented 3 years ago

The advice given is that:

You should use the mb_internal_encoding() function at the top of every PHP script you write (or at the top of your global include script), and the mb_http_output() function right after it if your script is outputting to a browser. Explicitly defining the encoding of your strings in every script will save you a lot of headaches down the road.

However, I feel that this is wrong. People need to setup php correctly to support UTF-8, not changing config at runtime.

iio7 commented 3 years ago

Also, as documented, the default charset for PHP 5.6 and onwards is already set for "UTF-8". All the md_ options, as long as they are unset, are UTF-8.

iio7 commented 3 years ago

If at all necessary to address this issue, the advice should be to make sure that the default value of default_charset is set to "UTF-8" in php.ini, and then only use mb_internal_encoding if you haven't got access to php.ini.