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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…