Heim  >  Artikel  >  Backend-Entwicklung  >  RADPHP完美支持中文的方法

RADPHP完美支持中文的方法

WBOY
WBOYOriginal
2016-06-23 13:51:192515Durchsuche

网站上有好多解决RADPHP显示中文的方法,但都是不解决根本问题的方法,RADPHP其实是可以完美的支持中文的,下面是具体方法:
 
真正解决radphp中文显示问题的方法
radphp是一个很不错的PHP编程器,它的拖拽建立程序的方法非常容易上手,
可是它的测试版对在ANSI编码时的中文无法正常显示,网上有好多文章都说
需要改成UTF8代码才可以显示中文,但是我不这么认为,进过测试,跟踪代码
发现原来是rpcl文件中的类库文件的代码有误,不知道是不是故意为之,因为
我们得到的都是试用版。下面是修正方法;
打开rpcl目录下classes.inc.php文件;找到第387行代码;
(即名为VCLDecodeUnicode的函数)
387行原来是这样的“if(!function_exists(‘mb_convert_encoding’))”
现在把判断条件中的!去掉,
变成“if(function_exists(‘mb_convert_encoding’))”
它的原意是如果php版本中存在’mb_convert_encoding’函数,
则不执行下面的代码,立刻跳转出该函数,
但是加了!的意思就完全反了,所以怎么都不会正确显示中文了。
 所以 VCLDecodeUnicode函数应该改成下面这样。
 function VCLDecodeUnicode($orgstr)
 {
 if(function_exists(‘mb_convert_encoding’))
 {
return $orgstr;
 }
 
$pattern = ‘/([0-9]+);/’;
preg_match_all($pattern, $orgstr, $matches);
 $size = count($matches[0]);
 if( $size   {
 return $orgstr;
 }
 
$rep_tbl = array();
 for($i = 0; $i yyyyy
 $utf8_str = ”;
if( $dec_val >= 0×0001 && $dec_val 0x07FF )
 {
 $utf8_str .= chr(0xE0 | (($dec_val >> 12) & 0x0F));
 $utf8_str .= chr(0×80 | (($dec_val >> 6) & 0x3F));
 $utf8_str .= chr(0×80 | (($dec_val >> 0) & 0x3F));
 }
 else
 {
 $utf8_str .= chr(0xC0 | (($dec_val >> 6) & 0x1F));
 $utf8_str .= chr(0×80 | (($dec_val >> 0) & 0x3F));
 }
 }
 $rep_tbl[$matches[0][$i]] = $utf8_str;
 }
 $nwestr = strtr($orgstr, $rep_tbl);
 $internal_str = mb_convert_encoding($nwestr, mb_internal_encoding(), ‘UTF-8′);
 return $internal_str;
 }
 
这样随便用什么编码都可以正确显示了。


回复讨论(解决方案)

谢谢分享,不过这里使用RADPHP的可能不多,是的,这个东西对简体中文的支持的确有问题。

啥时候能做出更好的呢............

后来经过研究,其实radphp中文已经很好的支持了,只是通过mb_internal_encoding()函数来判别是什么编码,然而GBK和GB2312都是ANSI编码,ANSI编码缺省认为是ISO-8859-1编码,所以只在rpcl.inc.php文件中加入如下代码就可以确保ANSI编码是中文的正确显示了。
===========================================================================
//如果缺省编码为ISO-8859-1时,则设置为GBK编码
if (mb_internal_encoding() == "ISO-8859-1"){mb_internal_encoding("GBK");}

===========================================================================

classes.inc.php文件并没有错,不用改的。

官方解决方案!

http://docwiki.embarcadero.com/RadPHP/en/UTF-8_Setup

官方解决方案!已经测试,确实可行!
http://docwiki.embarcadero.com/RadPHP/en/UTF-8_Setup

用官方的解决方案编码方式必须是UTF-8,用GBK编码是不行的

楼主强大!!!

Stellungnahme:
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