The Mobile Galaxy The New Mobile Era Has Come | Mobile – A Time To Remember

18Apr/110

现代汉语词典 for IPad

 

现代汉语词典所收词目,包括字、词、词组、熟语、成语等共五万六千余条。基本上反映了当前现代汉语词汇的面貌,能够满足读者查考的需要。ipad 版充分应用了汉字手写输入这一特点,为查找汉字提供了便利,一改以往纸质的检索方式,会写会拼就能找的到所要查找的汉字。是汉语学习很好的工具书,随意翻翻也增长知识。

同时提供两种不同的字体显示方式,可根据个人习惯定制,为方便儿童阅读,还提供一种注音模式,每个字给予汉语拼音注音,滑动屏幕可随意更改字体大小,方便阅读。

现代汉语词典 (AppStore Link) 现代汉语词典
Developer: Aihua Sun
Rated: 4+
Price: $0.99 Download

 

 

 

Share
Filed under: iPhone, Other No Comments
4Apr/110

Do not use NSLog in Release configuration

 

//You need o put this code into *_Prefix.pch

#ifdef DEBUG

#define DLog(...) NSLog(__VA_ARGS__)

#else

#define DLog(...) /* */

#endif

#define ALog(...) NSLog(__VA_ARGS__)

//In build options you need to add -DDEBUG to the Other C Flags for "Debug" configuration

//Note -- this options appears only for Device *.* configuration

//Last step -- replace NSLog with DLog enywhere you want to hide NSLog output on release build

 

Share
Filed under: iPhone, Other No Comments
1Apr/110

汉字转换中iconv参数注释

iconv转换字符集很好用,但是有时候你会发现iconv转换的时候会返回false或者空字符串,严格说来这算不上是iconv的问题,这其实是字符集的问题,但是实际编码中应该算是iconv的bug了。

你可以试试把以下这段字符串用iconv转换一下看看效果。

 $str="www.blogguy.cn,ok!the string is € .我要转换他!⊙●○①⊕◎Θ⊙¤㊣";
 echo '没有任何参数 : ', iconv("utf-8", "gbk", $str)."<br>";

在我的电脑中返回的结果是第一个特殊字符以后的字符都不能显示。

iconv有两个参数:分别是TRANSLIT 和IGNORE   ,分别的含义是TRANSLIT 表示如果目标编码里面不能翻译原编码,那么就直接找一个类似的最相近的字符或者字符串替代,例如€可能会被替换为EUR;而IGNORE   遇到目标字符集不能翻译的原始字符则直接跳过忽略,不返回false。

使用方法如下:

$infocontent=iconv("utf-8","gbk//IGNORE",$infocontent);

或者

$infocontent=iconv("utf-8","gbk//TRANSLIT",$infocontent);

鉴于此,我认为iconv应该提供一个默认的参数IGNORE,避免开发者使用不善时出现返回空字符串的情况。

Share
Filed under: iPhone, Other No Comments
1Apr/110

php将UTF-8完全转换成GB2312,解决iconv不能转换的问题

开始是用 $re =iconv("UTF-8", "GB2312",$snoopy->results); 将utf8转换成gb2312,结果经常出错!到了一半就看不到后文了。后来用 $re =iconv("UTF-8", "GB2312//IGNORE",$snoopy->results); 加上了忽略错误,好了点,可以转换到底了!可是今天又发现,还是有部分网页无法转换。后来仔细研究发现原来 iconv 只能转换3字符的utf8码,如果需要全码转换需要另外写函数。

首先需要了解utf8的构成:

基础:

1. 单独使用iconv函数只能转换GB2312字符,外文字符无法转换
2. 没有现成的函数可以用
3. bindec()函数:将二进制格式的"01"字符串转换为十进制数
4. decbin()函数:将十进制数转换为二进制字符串,如decbin(224)="11100000"

思路:因为UTF-8分别有1,2,3字节编码,中日韩文都是3字节编码,处理时根据字符编码中首字节大小区分字节数量。

1.如首字节小于128,为ASCII码
2.128~192,非UTF-8编码,且处理为&#ord();
3. 192~224, 双字节UTF-8编码
4. 224~240,三字节编码
5. 240~248,四字节编码
6. 。。。
7. 对于三字节编码的尝试用iconv转换成GB2312
8. 非GB2312的多字节字符,尝试把UTF-8转换成Unicode,再取到Unicode十进制值
9. 可以考虑使用位运算,也可以用bindec()函数

程序如下:

function GetGB2312String($name)
{
$tostr = "";
for($i=0;$i<strlen($name);$i++)
{
$curbin = ord(substr($name,$i,1));
if($curbin < 0x80)
{
$tostr .= substr($name,$i,1);
}elseif($curbin < bindec("11000000")){
$str = substr($name,$i,1);
$tostr .= "&#".ord($str).";";
}elseif($curbin < bindec("11100000")){
$str = substr($name,$i,2);
$tostr .= "&#".GetUnicodeChar($str).";";
$i += 1;
}elseif($curbin < bindec("11110000")){
$str = substr($name,$i,3);
$gstr= iconv("UTF-8","GB2312",$str);
if(!$gstr)
{
$tostr .= "&#".GetUnicodeChar($str).";";
}else{
$tostr .= $gstr;
}

$i += 2;
}elseif($curbin < bindec("11111000")){
$str = substr($name,$i,4);
$tostr .= "&#".GetUnicodeChar($str).";";

$i += 3;
}elseif($curbin < bindec("11111100")){
$str = substr($name,$i,5);
$tostr .= "&#".GetUnicodeChar($str).";";

$i += 4;
}else{
$str = substr($name,$i,6);
$tostr .= "&#".GetUnicodeChar($str).";";

$i += 5;
}
}

return $tostr;
}//end function

function GetUnicodeChar($str)
{
$temp = "";
for($i=0;$i<strlen($str);$i++)
{
$x = decbin(ord(substr($str,$i,1)));
if($i == 0)
{
$s = strlen($str)+1;
$temp .= substr($x,$s,8-$s);
}else{
$temp .= substr($x,2,6);
}
}
return bindec($temp);
}//end function

使用:$re=GetGB2312String($snoopy->results);

经过测试,基本上100% 可以转换成gbk码了。

Share
Filed under: iPhone, Other No Comments