PHP solves the problem of reading garbled files. PHP to read the file garbled solution php5 stream reading function seems to be the default encoding is UTF-8, previously in php4 direct file_get_contents () read gb2312 encoding normal, to 5 garbled. Solutions to PHP file garbled characters reading
Php 5 stream reading function seems to default encoding is UTF-8, previously in php 4 directly file_get_contents () read the normal gb2312 encoding, to 5 garbled. The solution on the internet is to use iconv () for transcoding after capturing. After reading this, I realized something was wrong: one is that the iconv library is not necessarily compiled, the bigger problem is that encoding is related to stream conversion (if iconv is used, php actually turns the code twice: stream-> UTF-8-> GB2312 ): isn't that too busy?
I carefully read the php documentation (I don't know how everyone writes code, but the documentation is very clear). the above section describes fopen () and file_get_contents () all mentioned "the default is UTF-8, but you can change the encoding with stream_default_encoding () or custom context attributes" (If unicode semantics are enabled, the default encoding of the read data is UTF-8. you can specify a different encoding by creating a custom context or by changing the default using stream_default_encoding ().). Use stream_default_encoding ('gb2312'); test: but the faint is, does this function not exist ?! It seems that php 6 is supported. However, there is no path to perfection, and "custom context attributes" can be used.
After reading the document more carefully, we finally solved the problem:
// Set the stream encoding format. this is a file. for network access, change file to http.
$ Opts = array ('file' => array ('encoding' => 'gb2312 '));
$ Ctxt = stream_context_create ($ opts );
File_get_contents (file name, FILE_TEXT, $ ctxt );
Listen php 5 stream reading function seems to be the default encoding is UTF-8, previously in php 4 directly file_get_contents () read the normal gb2312 encoding, to 5 on the garbled ....