PHP8.1: mb_convert_encoding not working with ASCII chars above 127
mb_convert_encoding() doesn't work even after enabling extension
php - mb_convert_encoding, undefined function while mbstring is enabled - Stack Overflow
PHP 8.2: mb_convert_encoding(): Handling HTML entities via mbstring is deprecated
A lot of newer Linux servers do not have PHP Multibyte modules installed by default. A simple solution is often to install php-mbstring.
On Red Hat flavors (CentOS, Fedora, etc.) you can use yum install php-mbstring.
Make sure you restart your Apache server afterwards. Use service httpd restart on RH flavors.
In the case of your installation is php5.6 is similar to solution of neilsimp1:
Running sudo apt-get install php7.0-mbstring and then sudo service php7.0-fpm restart did the trick for me.
sudo apt-get install php5.6-mbstring
and then restart apache service
sudo service apache2 restart.
iconv() is just a wrapper around the iconv() function found in the system C library where PHP is running (unless PHP is built with GNU iconv, in which case GNU iconv is used). So the performance and features of iconv() depend on where you are running PHP and how it is built.
The implementation of mb_convert_encoding(), on the other hand, is included in the PHP (module) source. It includes a library called libmbfl which handles the actual conversion. Thus it works the same regardless of where you're running PHP. There is a list of supported encodings here: http://php.net/manual/en/mbstring.encodings.php
So, in summary, I guess you could say that mb_convert_encoding() is more reliable to use if you want to support different platforms. However, if you use iconv() on Linux (for example), then it supports a lot more encodings (see iconv --list).
The relative performance of the functions also depends on the specific iconv() implementation, obviously.
Since PHP 5.4 there is a bug. Sometime iconv returns null string instead of returning a string with 'similar' char.
So you should use mb_convert_encoding.