一段将GB编码转换为utf8的代码_PHP

WBOY
Freigeben: 2016-06-01 12:34:47
Original
892 Leute haben es durchsucht
一段将GB编码转换为utf8的代码

gb2utf8.php 文件如下:

<font color="#000000"><br><font face="新宋体" color="#007700">Class </font><font face="新宋体" color="#0000bb">GB2UTF8 <br></font><font face="新宋体"><font color="#007700">{ <br>var </font><font color="#0000bb">$gb</font><font color="#007700">;          </font></font><font face="新宋体"><font color="#ff8000">// 待转换的GB2312字符串 <br></font><font color="#007700">var </font><font color="#0000bb">$utf8</font><font color="#007700">;        </font></font><font face="新宋体"><font color="#ff8000">// 转换后的UTF8字符串 <br>    </font><font color="#007700">var </font><font color="#0000bb">$CodeTable</font><font color="#007700">;   </font></font><font face="新宋体"><font color="#ff8000">// 转换过程中使用的GB2312代码文件数组 <br>    </font><font color="#007700">var </font><font color="#0000bb">$ErrorMsg</font><font color="#007700">;    </font></font><font face="新宋体"><font color="#ff8000">// 转换过程之中的错误讯息 <br><br></font><font color="#007700">function </font><font color="#0000bb">GB2UTF8</font><font color="#007700">(</font><font color="#0000bb">$InStr</font><font color="#007700">=</font><font color="#dd0000">""</font></font><font face="新宋体"><font color="#007700">) <br>{ <br></font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">gb</font><font color="#007700">=</font><font color="#0000bb">$InStr</font></font><font face="新宋体"><font color="#007700">; <br></font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">SetGb2312</font></font><font face="新宋体"><font color="#007700">(); <br>(</font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">gb</font><font color="#007700">==</font><font color="#dd0000">""</font><font color="#007700">)?</font><font color="#0000bb">0</font><font color="#007700">:</font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">Convert</font></font><font face="新宋体"><font color="#007700">(); <br>} <br><br>function </font><font color="#0000bb">SetGb2312</font><font color="#007700">(</font><font color="#0000bb">$InStr</font><font color="#007700">=</font><font color="#dd0000">"gb2312.txt"</font></font><font face="新宋体" color="#007700">) <br>{                  </font><font face="新宋体"><font color="#ff8000">// 设置gb2312代码文件,默认为gb2312.txt <br></font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">ErrorMsg</font><font color="#007700">=</font><font color="#dd0000">""</font></font><font face="新宋体"><font color="#007700">; <br></font><font color="#0000bb">$tmp</font><font color="#007700">=@</font><font color="#0000bb">file</font><font color="#007700">(</font><font color="#0000bb">$InStr</font></font><font face="新宋体"><font color="#007700">); <br>        if (!</font><font color="#0000bb">$tmp</font></font><font face="新宋体"><font color="#007700">) { <br>            </font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">ErrorMsg</font><font color="#007700">=</font><font color="#dd0000">"No GB2312"</font></font><font face="新宋体"><font color="#007700">; <br>            return </font><font color="#0000bb">false</font></font><font face="新宋体"><font color="#007700">; <br>            } <br></font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">CodeTable</font></font><font face="新宋体"><font color="#007700">=array(); <br>while(list(</font><font color="#0000bb">$key</font><font color="#007700">,</font><font color="#0000bb">$value</font><font color="#007700">)=</font><font color="#0000bb">each</font><font color="#007700">(</font><font color="#0000bb">$tmp</font></font><font face="新宋体"><font color="#007700">)) { <br></font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">CodeTable</font><font color="#007700">[</font><font color="#0000bb">hexdec</font><font color="#007700">(</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$value</font><font color="#007700">,</font><font color="#0000bb">0</font><font color="#007700">,</font><font color="#0000bb">6</font><font color="#007700">))]=</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$value</font><font color="#007700">,</font><font color="#0000bb">7</font><font color="#007700">,</font><font color="#0000bb">6</font></font><font face="新宋体"><font color="#007700">); <br>} <br>} <br>  <br>function </font><font color="#0000bb">Convert</font></font><font face="新宋体" color="#007700">() <br>{                   </font><font face="新宋体"><font color="#ff8000">// 转换GB2312字符串到UTF8字符串,需预先设置$gb <br></font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">utf8</font><font color="#007700">=</font><font color="#dd0000">""</font></font><font face="新宋体"><font color="#007700">; <br>if(!</font><font color="#0000bb">trim</font><font color="#007700">(</font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">gb</font><font color="#007700">) || </font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">ErrorMsg</font><font color="#007700">!=</font><font color="#dd0000">""</font></font><font face="新宋体"><font color="#007700">) { <br>return (</font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">utf8</font><font color="#007700">=</font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">ErrorMsg</font></font><font face="新宋体"><font color="#007700">); <br>} <br>        </font><font color="#0000bb">$str</font><font color="#007700">=</font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">gb</font></font><font face="新宋体"><font color="#007700">; <br><br>while(</font><font color="#0000bb">$str</font></font><font face="新宋体"><font color="#007700">) { <br>if (</font><font color="#0000bb">ord</font><font color="#007700">(</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$str</font><font color="#007700">,</font><font color="#0000bb">0</font><font color="#007700">,</font><font color="#0000bb">1</font><font color="#007700">))></font><font color="#0000bb">127</font></font><font face="新宋体"><font color="#007700">) <br>{ <br></font><font color="#0000bb">$tmp</font><font color="#007700">=</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$str</font><font color="#007700">,</font><font color="#0000bb">0</font><font color="#007700">,</font><font color="#0000bb">2</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$str</font><font color="#007700">=</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$str</font><font color="#007700">,</font><font color="#0000bb">2</font><font color="#007700">,</font><font color="#0000bb">strlen</font><font color="#007700">(</font><font color="#0000bb">$str</font></font><font face="新宋体"><font color="#007700">)); <br></font><font color="#0000bb">$tmp</font><font color="#007700">=</font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">U2UTF8</font><font color="#007700">(</font><font color="#0000bb">hexdec</font><font color="#007700">(</font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">CodeTable</font><font color="#007700">[</font><font color="#0000bb">hexdec</font><font color="#007700">(</font><font color="#0000bb">bin2hex</font><font color="#007700">(</font><font color="#0000bb">$tmp</font><font color="#007700">))-</font><font color="#0000bb">0x8080</font></font><font face="新宋体"><font color="#007700">])); <br>for(</font><font color="#0000bb">$i</font><font color="#007700">=</font><font color="#0000bb">0</font><font color="#007700">;</font><font color="#0000bb">$i</font><font color="#007700"><font color="#0000bb">strlen </font><font color="#007700">(</font><font color="#0000bb">$tmp</font><font color="#007700">);</font><font color="#0000bb">$i</font><font color="#007700">+=</font><font color="#0000bb">3</font></font><font face="新宋体"><font color="#007700">) <br></font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">utf8</font><font color="#007700">.=</font><font color="#0000bb">chr</font><font color="#007700">(</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$tmp</font><font color="#007700">,</font><font color="#0000bb">$i</font><font color="#007700">,</font><font color="#0000bb">3</font></font><font face="新宋体"><font color="#007700">)); <br>} <br>else <br>{ <br></font><font color="#0000bb">$tmp</font><font color="#007700">=</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$str</font><font color="#007700">,</font><font color="#0000bb">0</font><font color="#007700">,</font><font color="#0000bb">1</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$str</font><font color="#007700">=</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$str</font><font color="#007700">,</font><font color="#0000bb">1</font><font color="#007700">,</font><font color="#0000bb">strlen</font><font color="#007700">(</font><font color="#0000bb">$str</font></font><font face="新宋体"><font color="#007700">)); <br></font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">utf8</font><font color="#007700">.=</font><font color="#0000bb">$tmp</font></font><font face="新宋体"><font color="#007700">; <br>} <br>} <br>return </font><font color="#0000bb">$this</font><font color="#007700">-></font><font color="#0000bb">utf8</font></font><font face="新宋体"><font color="#007700">; <br>} <br><br><br>function </font><font color="#0000bb">U2UTF8</font><font color="#007700">(</font><font color="#0000bb">$InStr</font></font><font face="新宋体"><font color="#007700">) <br>{ <br>for(</font><font color="#0000bb">$i</font><font color="#007700">=</font><font color="#0000bb">0</font><font color="#007700">;</font><font color="#0000bb">$i</font><font color="#007700"><font color="#0000bb">count</font><font color="#007700">(</font><font color="#0000bb">$InStr</font><font color="#007700">);</font><font color="#0000bb">$i</font></font><font face="新宋体"><font color="#007700">++) <br></font><font color="#0000bb">$str</font><font color="#007700">=</font><font color="#dd0000">""</font></font><font face="新宋体"><font color="#007700">; <br>if (</font><font color="#0000bb">$InStr </font><font color="#007700"><font color="#0000bb">0x80</font></font><font face="新宋体"><font color="#007700">) { <br></font><font color="#0000bb">$str</font><font color="#007700">.=</font><font color="#0000bb">ord</font><font color="#007700">(</font><font color="#0000bb">$InStr</font></font><font face="新宋体"><font color="#007700">); <br>} <br>else if (</font><font color="#0000bb">$InStr </font><font color="#007700"><font color="#0000bb">0x800</font></font><font face="新宋体"><font color="#007700">) { <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0xC0 </font><font color="#007700">| </font><font color="#0000bb">$InStr</font><font color="#007700">>></font><font color="#0000bb">6</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0x80 </font><font color="#007700">| </font><font color="#0000bb">$InStr </font><font color="#007700">& </font><font color="#0000bb">0x3F</font></font><font face="新宋体"><font color="#007700">); <br>} <br>else if (</font><font color="#0000bb">$InStr </font><font color="#007700"><font color="#0000bb">0x10000</font></font><font face="新宋体"><font color="#007700">) { <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0xE0 </font><font color="#007700">| </font><font color="#0000bb">$InStr</font><font color="#007700">>></font><font color="#0000bb">12</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0x80 </font><font color="#007700">| </font><font color="#0000bb">$InStr</font><font color="#007700">>></font><font color="#0000bb">6 </font><font color="#007700">& </font><font color="#0000bb">0x3F</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0x80 </font><font color="#007700">| </font><font color="#0000bb">$InStr </font><font color="#007700">& </font><font color="#0000bb">0x3F</font></font><font face="新宋体"><font color="#007700">); <br>} <br>else if (</font><font color="#0000bb">$InStr </font><font color="#007700"><font color="#0000bb">0x200000</font></font><font face="新宋体"><font color="#007700">) { <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0xF0 </font><font color="#007700">| </font><font color="#0000bb">$InStr</font><font color="#007700">>></font><font color="#0000bb">18</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0x80 </font><font color="#007700">| </font><font color="#0000bb">$InStr</font><font color="#007700">>></font><font color="#0000bb">12 </font><font color="#007700">& </font><font color="#0000bb">0x3F</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0x80 </font><font color="#007700">| </font><font color="#0000bb">$InStr</font><font color="#007700">>></font><font color="#0000bb">6 </font><font color="#007700">& </font><font color="#0000bb">0x3F</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$str</font><font color="#007700">.=(</font><font color="#0000bb">0x80 </font><font color="#007700">| </font><font color="#0000bb">$InStr </font><font color="#007700">& </font><font color="#0000bb">0x3F</font></font><font face="新宋体"><font color="#007700">); <br>} <br>return </font><font color="#0000bb">$str</font></font><font face="新宋体"><font color="#007700">; <br>} <br>}</font><br></font></font><br></font></font></font></font></font></font>

测试文件如下:

<font color="#000000"><br><font face="新宋体"><font color="#0000bb">php <br>Header</font><font color="#007700">(</font><font color="#dd0000">"Content-type: image/png"</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$im </font><font color="#007700">= </font><font color="#0000bb">imagecreate</font><font color="#007700">(</font><font color="#0000bb">400</font><font color="#007700">,</font><font color="#0000bb">300</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$black </font><font color="#007700">= </font><font color="#0000bb">ImageColorAllocate</font><font color="#007700">(</font><font color="#0000bb">$im</font><font color="#007700">, </font><font color="#0000bb">0</font><font color="#007700">,</font><font color="#0000bb">0</font><font color="#007700">,</font><font color="#0000bb">0</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$white </font><font color="#007700">= </font><font color="#0000bb">ImageColorAllocate</font><font color="#007700">(</font><font color="#0000bb">$im</font><font color="#007700">, </font><font color="#0000bb">184</font><font color="#007700">,</font><font color="#0000bb">44</font><font color="#007700">,</font><font color="#0000bb">6</font></font><font face="新宋体"><font color="#007700">); <br>include(</font><font color="#dd0000">"gb2utf8.php"</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">$obj</font><font color="#007700">=new </font><font color="#0000bb">gb2utf8</font></font><font face="新宋体"><font color="#007700">(); <br></font><font color="#0000bb">$obj</font><font color="#007700">-></font><font color="#0000bb">gb</font><font color="#007700">=</font><font color="#dd0000">"123abc中国456def测试正确"</font></font><font face="新宋体"><font color="#007700">; <br></font><font color="#0000bb">$obj</font><font color="#007700">-></font><font color="#0000bb">Convert</font></font><font face="新宋体"><font color="#007700">(); <br></font><font color="#0000bb">ImageTTFText</font><font color="#007700">(</font><font color="#0000bb">$im</font><font color="#007700">, </font><font color="#0000bb">20</font><font color="#007700">, </font><font color="#0000bb">0</font><font color="#007700">, </font><font color="#0000bb">5</font><font color="#007700">, </font><font color="#0000bb">50</font><font color="#007700">, </font><font color="#0000bb">$white</font><font color="#007700">, </font><font color="#dd0000">"SIMKAI.TTF"</font><font color="#007700">, </font><font color="#0000bb">$obj</font><font color="#007700">-></font><font color="#0000bb">utf8</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">ImagePNG</font><font color="#007700">(</font><font color="#0000bb">$im</font></font><font face="新宋体"><font color="#007700">); <br></font><font color="#0000bb">ImageDestroy</font><font color="#007700">(</font><font color="#0000bb">$im</font><font color="#007700">);</font><br></font></font><br>

说明:
需要正确设置font文件,请先确认可以使用font直接(不使用gb2utf8)输出英文。
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage