- 浏览: 1783143 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (641)
- vb2005xu自己动手系列 (174)
- vb2005xu开发文章转摘 (47)
- vb2005xu发发牢骚 (99)
- vb2005xu新技术灌水 (12)
- vb2005xu网络资源集锦 (21)
- vb2005xu软件学习 (60)
- 英语学习 (3)
- JavaScript 学习 (54)
- JAVA OOP 巩固 之 CustomDatabase 的开发 (5)
- 2013年9月之前所在公司 记事 (7)
- FleaPHP/QEEPHP 资料 (87)
- JAVA MAIL 学习篇 (4)
- Python turbogears (5)
- Rails 个人开发四部曲 (3)
- 名人传 (8)
- iwp framework (5)
- 高考零分作文 (5)
- startos (8)
- lua (0)
- 职场 (1)
最新评论
-
hellotieye:
自己 评论 自己 挺嗨呀
Mysql sql查询时 if 的用法 -
igevin:
转载请标明出处,转自Gevin的博客http://blog.i ...
RESTful API 编写指南 -
Theobob:
...
实现简单的ACL -
vb2005xu:
比如 对于 curl 调用就不再需要 加各种if 判断了,
$ ...
搞一个简单的数据打印工具AsDebug の Laravel -
vb2005xu:
http://geekplux.com/wiki/
YII2 模块内自定义错误页
看小说: 40行程序写成的
http://iamsese.cn/view/xiaoshuo
http://iamsese.cn/view/xiaoshuo
自己实现的PHP UNICODE 解析和反解析类
网上找到的都是 PHP到什么GBK GB2312的,但是对于 日文 俄文等等就不行了,
我做的这个代码 'iamsese.unicode.php' 终于解决了这些问题,哈哈哈
你查看源代码 看到 页面标题处
$title = IAMSESE_UNICODE::encode("{小说应用 -- начина } "); $title .= IAMSESE_UNICODE::deUnicode($title);
写道
<?php
require_once 'woshisese.unicode.php' ;
$title = woshisese_UNICODE::encode("{小说应用 -- начина } ");
$title .= woshisese_UNICODE::deUnicode($title);
if (file_exists('./woshisese/yes.txt')) {
if ($_REQUEST['index'] != '' && is_numeric($_REQUEST['index']) && ($_REQUEST['index'] >= 1)){
$current = $_REQUEST['index'] ;
}
else
$current = $_REQUEST['index'] = 1 ;
$file = "./woshisese/ehan{$current}.txt" ;
$content = file_get_contents($file);
$array = explode("\n",$content);
//去除最后一个空字符
$array = array_slice($array,0,count($array)-1);
$content = '' ;
foreach($array as $e){
$e = woshisese_UNICODE::encode($e);
$content .= "<p>{$e}</p>";
}
}
else {
$woshisesesource = './ehan.txt' ; //
$f = fopen($woshisesesource,'r');
$filecount = 1 ;
//if ($f) die('not sourve');
while (!feof($f)) {
$str = '' ;
for ($i=0;$i<100;$i++) {
$buffer = fgets($f, 10240);
$str .= $buffer ;
}
//die($str);
//每个文件存100行
file_put_contents("./woshisese/ehan{$filecount}.txt",$str);
$filecount ++ ;
}
file_put_contents("./woshisese/yes.txt","yes");
fclose($f);
$content = "数据建立完成,请刷新当前页显示";
}
?>
<html>
<head>
<title><?php echo $title ; ?></title>
</head>
<body>
<div id='container'>
<?php echo $content ; ?>
</div>
<div>
<a href='index.php?index=<?php echo ($current-1) ;?>'>上一页</a>
<a href='index.php?index=<?php echo (1) ;?>'>第一页</a>
<a href='index.php?index=<?php echo ($current+1) ;?>'>下一页</a>
</div>
</body>
</html>
<style>
html,body {
height: 100%;
margin: 0 0 ;background-color: gray;
text-align: center ;
}
#container {
height: 80%;width: 800px;
margin: 30px auto ;
background-color: #ffc;
overflow: auto ;
}
#container p {
text-indent: 2em ;
text-align: left ;
}
</style>
<script>
</script>
require_once 'woshisese.unicode.php' ;
$title = woshisese_UNICODE::encode("{小说应用 -- начина } ");
$title .= woshisese_UNICODE::deUnicode($title);
if (file_exists('./woshisese/yes.txt')) {
if ($_REQUEST['index'] != '' && is_numeric($_REQUEST['index']) && ($_REQUEST['index'] >= 1)){
$current = $_REQUEST['index'] ;
}
else
$current = $_REQUEST['index'] = 1 ;
$file = "./woshisese/ehan{$current}.txt" ;
$content = file_get_contents($file);
$array = explode("\n",$content);
//去除最后一个空字符
$array = array_slice($array,0,count($array)-1);
$content = '' ;
foreach($array as $e){
$e = woshisese_UNICODE::encode($e);
$content .= "<p>{$e}</p>";
}
}
else {
$woshisesesource = './ehan.txt' ; //
$f = fopen($woshisesesource,'r');
$filecount = 1 ;
//if ($f) die('not sourve');
while (!feof($f)) {
$str = '' ;
for ($i=0;$i<100;$i++) {
$buffer = fgets($f, 10240);
$str .= $buffer ;
}
//die($str);
//每个文件存100行
file_put_contents("./woshisese/ehan{$filecount}.txt",$str);
$filecount ++ ;
}
file_put_contents("./woshisese/yes.txt","yes");
fclose($f);
$content = "数据建立完成,请刷新当前页显示";
}
?>
<html>
<head>
<title><?php echo $title ; ?></title>
</head>
<body>
<div id='container'>
<?php echo $content ; ?>
</div>
<div>
<a href='index.php?index=<?php echo ($current-1) ;?>'>上一页</a>
<a href='index.php?index=<?php echo (1) ;?>'>第一页</a>
<a href='index.php?index=<?php echo ($current+1) ;?>'>下一页</a>
</div>
</body>
</html>
<style>
html,body {
height: 100%;
margin: 0 0 ;background-color: gray;
text-align: center ;
}
#container {
height: 80%;width: 800px;
margin: 30px auto ;
background-color: #ffc;
overflow: auto ;
}
#container p {
text-indent: 2em ;
text-align: left ;
}
</style>
<script>
</script>
这里顺带着就解决,前后端ajax unicode编码的问题一起全部解决吧
<?php /** * 时间: 2009-4-9 17:19:55 * iamsese.cn 我是色色 * vb2005xu.iteye.com * * Unicode 编码和转换功能库 */ //class B { // static $name = "序列化操作--方法返回" ; // function getB(){ // return B::$name ; // } // var $bname = "序列化操作--方法返回" ; // function getC(){ // return $this->bname ; // } //} class IAMSESE_UNICODE { // function getB(){ // return B::getB(); // } // function getC(){ // return new B() ; // } // /** * ord 方法的unicode 支持 * * @param 单字 $c * @return int */ function uniord($c) { $h = ord($c{0}); if ($h <= 0x7F) { return $h; } else if ($h < 0xC2) { return false; } else if ($h <= 0xDF) { return ($h & 0x1F) << 6 | (ord($c{1}) & 0x3F); } else if ($h <= 0xEF) { return ($h & 0x0F) << 12 | (ord($c{1}) & 0x3F) << 6 | (ord($c{2}) & 0x3F); } else if ($h <= 0xF4) { return ($h & 0x0F) << 18 | (ord($c{1}) & 0x3F) << 12 | (ord($c{2}) & 0x3F) << 6 | (ord($c{3}) & 0x3F); } else { return false; } } /** * 将指定编码的字符串分解成数组 * * @param STRING $string * @param STRING $encode * @return ARRAY */ function mbStringToArray ($string,$encode="UTF-8") { $strlen = mb_strlen($string); while ($strlen) { $array[] = mb_substr($string,0,1,$encode); $string = mb_substr($string,1,$strlen,$encode); $strlen = mb_strlen($string); } return $array; } /** * 仅支持PHP5 -- 同上,是icov实现 */ // function iconvStringToArray ($string,$encode="UTF-8") { // $strlen = iconv_strlen($string,$encode); // while ($strlen) { // $array[] = iconv_substr($string,0,1,$encode); // $string = iconv_substr($string,1,$strlen,$encode); // $strlen = iconv_strlen($string,$encode); // } // return $array; // } /** * Unicode 编码表示 * * @param 单字 $unichar * @return String */ function unicharCodeAt($unichar){ return "&#" . IAMSESE_UNICODE::uniord($unichar) . ';' ; } /** * chr 函数的unicode实现 * * @param mixed[整形数组或者整数] $codes * @return String */ function uchr ($codes) { if (is_scalar($codes)) $codes= func_get_args(); $str= ''; foreach ($codes as $code) $str.= html_entity_decode('&#'.$code.';',ENT_NOQUOTES,'UTF-8'); return $str; } /* * 同上 基于mb实现 */ // function unichr($codes) { // if (is_scalar($codes)) // $codes= func_get_args(); // $str= ''; // foreach ($codes as $code) // $str.= mb_convert_encoding('&#' . intval($u) . ';', 'UTF-8', 'HTML-ENTITIES'); // return $str; // } /** * 将unicode编码的字符串解析成正常的数据 * * @param String $str * @return String */ function deUnicode($str){ $arr = explode (';',str_ireplace('&#','',$str) ); //去除最后一个空字符 $arr = array_slice($arr,0,count($arr)-1); return IAMSESE_UNICODE::uchr($arr); } /** * 将字符串解析成unicode编码的字符串 * * @param String $str * @return String */ function encode($str){ $arr = IAMSESE_UNICODE::mbStringToArray($str); $str = '' ; foreach($arr as $a){ $str .= IAMSESE_UNICODE::unicharCodeAt($a) ; } return $str ; } /** * 输出Unicode字符表 * */ function echoUnicodeTable(){ for ($i=0;$i<4096;$i++){ echo '<br/>' . dechex($i). ' ********** '; for ($j=0;$j<16;$j++){ $ch = intval($i * 16 + $j); $ch = IAMSESE_UNICODE::uchr($ch); echo $ch . ' -- '; } } } /** * 输出Ascii字符表 * */ function echoAsciiTable(){ for($i=0;$i<16;$i++){ echo '<br/>' . ($i). ' ********** '; for ($j=0;$j<16;$j++){ $num = intval($i * 16 + $j); $ch = IAMSESE_UNICODE::uchr($num); echo "{$ch} --- "; } } } function test(){ $test1 ='我是色色[iamsese.cn] начинается уже в марте bbs.cn #$%^&*()_+!@QADD?><.,,m'; $test1 = IAMSESE_UNICODE::encode($test1); echo $test1 ; echo "\n<br/>\n"; $test1 = IAMSESE_UNICODE::deUnicode($test1); echo $test1 ; } } //IAMSESE_UNICODE::test(); //IAMSESE_UNICODE::echoUnicodeTable(); //IAMSESE_UNICODE::echoAsciiTable(); ?>
前端js代码
jQuery.iamsese = { version : '过客阵营 -- 我是色色 !', // ++++++++Unicode 编码转换++++++++ // toUnicode : function(s) { var ctpl = '&#{c};' var len = s.length; var rs = ""; for (var i = 0; i < len; i++) rs += ctpl.replace('{c}', s.charCodeAt(i)); return rs; }, deUnicode : function(s) { /** * 直接用str.replace("apples","oranges") 只会替换第一个匹配的 使用 /g 替换所有匹配的字符, /i * 忽略大小写 */ var k = s.replace(/&#/gi, "").split(";"); var rs = ""; for (i = 0; i < k.length; i++) rs += String.fromCharCode(k[i]); return rs; }
发表评论
-
ws-http 最简单轻量的PHP CURL工具库
2016-07-29 20:44 2639欢迎大家拍砖 https://github.com/to ... -
Facade 包装类 -- 解决视图里面长长的命名空间调用问题
2016-04-20 10:48 1758有时候模版里面定义 ... -
PHP单例模式面试注意事项
2015-10-20 09:57 1960最近面了不少PHP从业者,有实习生也有5/6年以上的开发者 ... -
NGINX 配置 SSL 证书 搭建 HTTPS 网站
2015-10-19 19:19 2924下面是详细的配置过程: 1、在服务器上使用 Open ... -
关于php cron任务管理的实现假想
2015-10-17 21:25 1913之前每开发一个计划任务功能均需要在线上操作crontab来新 ... -
修改一些PHP工具
2014-10-24 19:27 1807原来的代码 在非框架下是木有问题的,但是用在框架下就报错, ... -
sublime text linux上中文输入问题的终极解决方案
2014-10-13 11:07 8573我一直在使用sublime text ... -
qeephp3.0 发布了
2014-10-07 17:21 1708QeePHP 是一个快速、灵活的开发框架。应用各种成熟的架构 ... -
swiftmailer 的快捷助手 qser-mailer
2014-09-09 23:52 3598近日在对charsen的修改版上进行了再次的修改与调整,对 ... -
PHP 中简单的伪造IP刷票实现
2014-05-15 17:06 2767一般而言,我们的获取用户真实ip的代码大致是这样... / ... -
PHP5.5 htmlspecialchars 返回null的坑
2014-04-25 12:23 2620昨天在写 PDO数据库封装类的 测试代码时遇到这个问题,取 ... -
PHP 5.5 empty + 魔术变量 的坑
2014-04-16 15:53 1608今天在测试代码时遇到这么一个疑问? dump((in ... -
Aert_Log: 设计一个精简易用的日志
2014-04-13 18:28 2497日志记录对于应用的 ... -
创建一个简单的短链服务类
2013-07-01 18:20 1374整理一个简单的短链算法,整理到自己的代码库中: &l ... -
收集常用的PHP简单代码
2013-06-30 17:53 2066对于日常工作中整理出来的某些功能做个简单梳理: 1 ... -
简易PHP路由,支持正反向url解析支持
2013-06-21 22:23 8234几年前实现了一个简单的正向路由,那时候不会写反向路由解析, ... -
系统学习のCACHE 学习
2012-11-21 13:58 1914http://www.phpfans.net/article/ ... -
YY 下 sql查询封装类 不知道好不好使
2012-07-18 16:44 1341<?php class Pkg_Db_Actor { ... -
生成后台管理菜单 admin_menu 类
2012-05-05 18:27 4656<?php /** * 管理菜单 * */ ... -
抽取个sql生成器工具 -- 摘自 fuelphp1.1 版本
2012-04-25 20:17 1235<?php /** * Sql 创造者类 * ...
相关推荐
8. **示例代码分析**:压缩包中的"应用"文件可能包含了处理Unicode字符的具体代码示例,通过学习这部分代码,学生可以了解如何在iOS应用中正确处理Unicode,解决实际开发中的相关问题。 9. **毕业设计应用**:对于...
**Unicode串口通信Demo**是基于编程技术的一个项目示例,主要关注的是如何在不同的编程环境中,如**VC2010**和**VC6**,实现Unicode编码的串口通信功能。Unicode是一种广泛使用的字符编码标准,它包含了世界上几乎...
5. **调试和日志记录**:在解决问题的过程中,使用日志记录工具记录PD4ML的输出信息,可以帮助定位问题所在。例如,查看PD4ML是否成功加载了指定的字体,或者编码设置是否被正确应用。 在提供的“test”文件中,...
本文将深入探讨如何在Android Things环境中解决中文乱码的问题,以及提供的Demo的具体实现。 首先,我们要理解Android Things与传统Android系统在处理字符编码上的差异。Android Things基于Android框架,但为了适应...
本篇将深入探讨JFreeChart的参考Demo、技术文档,以及如何解决在使用过程中可能遇到的乱码问题。 首先,**JFreeChart参考Demo**是学习和理解JFreeChart功能的绝佳资源。Demo中包含了各种类型的图表示例,展示了如何...
3. **C/C++端**:使用适当的库函数(如`std::wstring_convert`或手动转换)将字节转换为宽字符(如`wchar_t`),以处理Unicode字符。 4. **JNI接口**:将处理后的宽字符转换回字节数组,再通过`env->...
- 确保C++和C#之间的字符编码一致,否则可能会出现乱码问题。 - 理解C++的名称修饰规则,正确声明和导出C++函数。 - 在C#中使用`DllImport`时,提供正确的DLL名和函数原型,包括参数类型、顺序和调用约定。 - ...
这种转换通常是为了解决在非Unicode环境下的中文字符处理问题,因为ansistring和ansichar通常与系统默认的代码页相关联,可以在某些情况下更好地处理特定的非Unicode字符集,如GBK。然而,这种方法并不总是完美的...
这可能包括字符乱码、显示不全或输出错误等常见问题。然而,由于描述中还提到了“一些未解决的问题”,这意味着尽管已经有改进,但仍有待进一步优化,鼓励对VFP感兴趣的开发者参与其中,进行代码调试和增强。 ...
总结来说,处理Delphi中的中文和英文混合字符串截取,关键在于理解Unicode字符串的特性,正确选择和使用字符串截取函数,并在必要时进行字节对齐和编码转换。通过这样的方式,我们可以确保在处理多语言文本时不会...
"VB6使用Unicode版API函数Demo"部分强调了使用Unicode字符集的API函数。Unicode是一种包含几乎世界上所有字符的编码标准,确保了跨语言和跨平台的文本处理能力。在VB6中,默认使用的是ANSI字符集,但为了支持多语言...
UTF-8是一种广泛使用的Unicode字符编码,可以处理世界上大部分语言的字符,而GBK是中国大陆常用的汉字编码,包含大量中文字符。开发者在集成支付宝SDK时,需确保正确设置编码,以防止因字符集不匹配导致的数据乱码...
这个“JFreeChart Demo”是基于版本1.0.17的一个示例,它展示了如何使用JFreeChart库来创建图表,并特别解决了中文乱码的问题。 在“StackedBarChartDemo1”中,我们能看到如何生成堆叠条形图。堆叠条形图是一种...
总的来说,解决编码乱码问题的关键在于理解字符编码的概念,正确配置和处理编码,以及在不同组件间保持一致性。对于开发者来说,掌握这些技巧不仅能解决眼前的问题,还能提升对跨平台、跨语言编程的理解,从而提高...
"table-export(excel、word等中文无乱码)多版本合集"是一个专门处理表格导出至Excel、Word等格式的工具包,旨在确保在处理中文字符时不会出现乱码问题。这个合集包含了不同版本的table-export实现,以适应各种开发...
在iOS开发中,二维码识别是一项常见的功能,ZBar是一个广泛使用的开源库,它允许开发者集成二维码扫描和解码能力到他们的应用中。然而,当处理中文字符时,ZBar可能会出现乱码问题,这主要是由于编码不兼容或者解码...
6. **后端处理**:在服务器端,可能需要考虑如何存储和检索带有Emoji的数据,例如,使用UTF-8编码存储,避免数据传输过程中的乱码问题。 7. **响应式设计**:考虑到移动设备的屏幕尺寸差异,可能需要调整Emoji的...
总的来说,“Demo.EncodeConvert.Tool”是一个实用的文档编码转换工具,对于处理多语言环境下的文本数据,或是解决编码不兼容问题具有很大的帮助。正确理解和使用文档编码,是确保信息准确传递的关键,也是IT从业者...
由于Emoji是Unicode字符集的一部分,它们在不同的操作系统和浏览器中可能有不同的表示方式,这可能导致在存储、传输或者显示时出现问题。本示例"java web处理 emoji demo"将探讨如何在Java Web应用中正确地处理这些...
而处理文本文件时,字符流能够更好地处理Unicode编码问题,避免乱码问题。 在IO流操作中,我们还需要了解一些关键概念: - **管道流(Piping Stream)**:允许流之间的连接,使得一个流的输出可以作为另一个流的...