php中ord实现中文字符串截取并解决乱码问题
代码如下 | 复制代码 |
<?php //i字符 短整形 32位 4个字节 64位8个字节 //s字符 短整形 2个字节 //l字符 长整形 4个字节 //f字符 单精度浮点 4个字节 //d字符 双精度浮点 8个字节 function getascill($str) |
更多详细内容请查看:http://www.111cn.net/phper/php-function/php-ord.htm
实例二
代码如下 | 复制代码 |
<? |
解决方法
1,打开Apache配置文件httpd.conf,如默认情况下为 /etc/httpd/conf/httpd.conf
# vi /etc/httpd/conf/httpd.conf
2,找到AddDefaultCharset配置项
AddDefaultCharset UTF-8
3,修改AddDefaultCharset配置,关闭配置字符,如下
AddDefaultCharset Off
4,同时也可设置Apache默认编码为GB2312如下
AddDefaultCharset GB2312
php中session经常会出现一些很奇怪的问题,这些问题很多都是小细节的事情,对于php 初学者来说可能很难发现是什么原因,今天我们把几乎所有的session引起或出现的问题收集在一起,一一给出了解决方案,有需要的同学看看哦,如果有更好的朋友可提供给我。
1>错误提示
代码如下 | 复制代码 |
Warning: Cannot send session cookie - headers already sent Warning: Cannot send session cache limiter - headers already sent |
问题的原因是在程序中使用session_start()时,之前已经有实际的html内容输出了。即使是echo或print一条消息了,echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将session_start()调到程序的第一行。
2>错误提示
代码如下 | 复制代码 |
Warning: open(F:/webphpsessiondatasess_76666aecf239891edc98b5, O_RDWR) failed |
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将
代码如下 | 复制代码 |
session.save_path和session.cookie_path 设置置为 session_save_path = c:temp session.cookie_path = c:temp |
然后在c:目录下建立一个temp目录,即可
3>
代码如下 | 复制代码 |
错误提示 Warning: Trying to destroy uninitialized session in |
出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。
4>怎么获得当前session的id值呢?
最简单的方法是:
代码如下 | 复制代码 |
echo SID; |
5>在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?
认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!
但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
注:此问题,会出现在PHP4.1.2中。
6>用session做登录主页面后,其它页面怎么用session限制登录。。。
解决的方法:
代码如下 | 复制代码 |
session_start(); if(!session_registered(’login’) ││ login != true) { echo “你没有登陆”; exit; } |
7>用session_register()注册了session变量,可是当用header或用javascript的重定向语句,那么在一下页面中,却访问不到session所注册的变量值。
问题的程序片段:
代码如下 | 复制代码 |
<? session_start(); $ok = ‘love you’; session_register($ok); header(”location : next.php”); ?> next.php <? session_start(); echo $ok; ?> |
解决的方法:
当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失。
解决的方法。
代码如下 | 复制代码 |
header(”Location: next.php” .”?” . SID); |
在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。
8>session如何传数组
代码如下 | 复制代码 |
session_register(’data’;); data=array(1,2,3,4); |
方法是先注册后赋值
9>可以用像 HTTP_GET_VARS['**']方式来访问session值呢?
回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
HTTP_SESSION_VARS_SESSION
例程:
代码如下 | 复制代码 |
<?php session_start(); $username = ‘;stangly.wrong’;; session_register(’;username’;); echo $HTTP_SESSION_VARS['username']; echo ‘;<br>’;; echo _SESSION['username']; ?> 10> |
session_unregister() 和 session_destroy() 有何区别?
session_unregister()函数主要作用是注消当前的一个session变量。不过要注意的是,如果你用HTTP_SESSION_VARS或_SESSION在当前页面中引用过session变量,那么你可能需要和unset()配合 来注消session变量。
而session_destroy()是清除当前的session环境。意思就是说,当你用session_destroy()函数后,那么你就不可能再用session_is_registered()来检测session的变量了。但是需要注意的是他不能清除global中的session或使用了session cookie的中的session.所以在用session_destroy之前,最好不要用HTTP_SESSION_VARS _SESSION来访问session.
例程:
代码如下 | 复制代码 |
if(isset(_COOKIE[session_name()])) { session_start(); session_destroy(); unset(_COOKIE[session_name()]); } |
通用的ASCII码对照表
图解ASCII码对照表图,以字符A为例
Dec表示十进制,如65
Hx表示十六进制,如41
Oct表示八进制,如101
Char表示显示字符,如A
ASCII码对照表图分为两个单元
1,控制字符 0-31和127
2,可显示字符 32-126
(1)48~57为0到9十个阿拉伯数字;
(2)65~90为26个大写英文字母;
(3)97~122号为26个小写英文字母;
(4)其它标点符号、运算符号等;
二,ASCII扩展码对照表
三,PHP字符转换函数说明
具体字符转换函数说明请参考[PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明]
十进制转二进制 decbin() 函数
十进制转八进制 decoct() 函数
十进制转十六进制 dechex() 函数
二进制转十六制进 bin2hex() 函数
二进制转十制进 bindec() 函数
八进制转十进制 octdec() 函数
十六进制转十进制 hexdec()函数
任意进制转换 base_convert() 函数
字符转换实例
实例一,如何把一个字符转换为二进制、八进制或十六进制,可以使用ord()函数先把字符转换为ASCII值,然后使用相应的进制转换函数进行转换,如下
a 这个字符转换为其二进制/八进制/十六进制,如下
a字符的十进制:ord('a'); //输出97
二进制:decbin(ord('a')); //输出1100001
八进制:decoct(ord('a')); //输出141
十六进制:dechex(ord('a')); //输出61
然后可以通过把各进制输出的结果对应上面ASCII码对照表图进行核对。
实例二,如何把一个二进制转换为十六进制或十进制,如a的二进制,如下
采用实例一的方法获取a字符的二进制
decbin(ord('a'));
然后把二进制转换为十六进制或十进制
十六进制:bin2hex(decbin(ord('a')));//输出31313030303031
二进制J:bindec(decbin(ord('a'))); //输出97
上面讨论的ord()函数,将在下一期中文字符编码研究系列中详细讨论。
四,参考资料
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
asciitable对照表图
维基百科ASCII
百度百科ASCII
本文章同时解决两个问题就是php 中require和include引用url和 php的文件编码转换函数问题,有需要的朋友可以看看哈,参考一下。
PHP配置中“allow_url_fopen”这个选项是打开了的话,可以使用url作为include或者require的参数。
以及 allow_url 相关的参数,具体可以参考php.ini中说明
对整个页面进行转换
该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正常显示。
另一个问题:
该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正常显示。
在php文件的头部加上下面三行代码:
代码如下 | 复制代码 |
mb_internal_encoding("gb2312"); // 这里的gb2312是你网站原来的编码 mb_http_output("HTML-ENTITIES"); ob_start('mb_output_handler'); |
使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。
如果没有没有开启php的mbstring扩展,则需要做如下设置
相关文章
js URLdecode()与urlencode方法支持中文解码
下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
- 这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
- 这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
- 一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
- 这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25