昨天用phpstorm打开asp程序(需要在phpstorm的插件里开启asp的支持,才有高亮)的时候,发现所有的中文都是乱码。
很明白,ASP,大多是gbk编码的,而phpstorm默认是utf-8。
很方便,在settings里将fileencoding调整为gbk就OK了。但这样,还是看不到效果,再打开任何一个文件,还是乱码
不要紧张,将phpstorm退出一下再进就OK了。
这可能是因为PHPstorm在启动的时候将配置加载到内存导致的吧?退出一下,配置什么的就重新加载了。
看到中文不再是所谓的麻将牌,还是比较欣慰的。
其实以前也写过类似的东西,只是最近又有朋友在群里问我这样的事情,一时间在博客上没有找到,于是准备重写了一遍。
一般说来,我们所说的编码格式一致:可以如下图所示:character_set_client,character_set_connection,character_set_database,character_set_results,character_set_server编码要一致
初始情况的修改就是在my.ini里加上:default-character-set=utf8 【这个请使用适当的编码】
在程序中,我们如果是用mysql类库,往往都是在连接上后来运行:mysql_query("set names utf8"),这一句查询其实 就是那句set character_set_connection=utf8, character_set_results=utf8, character_set_client=binary 的集合。
在PHP5的时候,如果你使用的mysql数据库版本大于5.0.7,你还可以用:mysql_set_charset这个方法直接定义。
所以,相对来说,处理乱码问题,参考这些就可以搞定了。
simplexml函数是PHP5推出的一个新的类库,可以让你很方便的操作XML,对大多数人而言,最常用的应该是simplexml_load_file和simple_load_string两种了。
但是在使用中总会有一点问题,于是做了简单的一些测试。
建立了四个文件,两个GBK,两个UTF8,
两个GBK的文件内容分别如下:
XML/HTML代码
- <?xml version="1.0" encoding="gbk" ?>
- <test>
- <test1>this is a test中文</test1>
- </test>
XML/HTML代码
- <?xml version="1.0" encoding="utf-8" ?>
- <test>
- <test1>this is a test中文</test1>
- </test>
正如你们想的那样,UTF8的文件也是这些内容。
然后开始使用 simplexml_load_file进行测试:
PHP代码
- <?php
- $xmlFile = '1.txt';
-
- $xml = @simplexml_load_file( $xmlFile );
- if ( $xml === false ){
- echo( 'failed' );
- }else{
- echo '<pre>';
- print_r( $xml );
- echo '</pre>';
- }
-
- ?>
然后,你会发现什么?
1、如果xml的encoding与文件类型不符,立刻报错
2、simplexml可以处理gbk的XML,即文件内容和encoding都为gbk(ANSI格式)
3、不管文件内容是什么,处理完了,都是UTF8.
over,测试完毕
其实想这个测试还有另外一个原因,因为thinkPHP的模版引擎的自定义扩展是采用XML来实现的,以前很多朋友在扩展的时候都会报错,那时候,我们的提示是:请使用 UTF8格式创建XML,现在,我们又可以提示:随便你想怎么创建,只要您的文件格式和encoding一致就行。