广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php字符串乱码怎么解决
  • 1030
分享到

php字符串乱码怎么解决

php乱码 2015-07-03 17:07:27 1030人浏览 无得
摘要

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php字符串乱码怎么解决?PHP iconv()函数字符编码转换的问题在php中iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库;

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑

php字符串乱码怎么解决?PHP iconv()函数字符编码转换的问题

php中iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库;但有时候iconv对于部分数据转码会无缘无故的少一些。比如在转换字符"—"到gb2312时会出错。

下面一起慢慢看一下这个函数的用法。

最简单的应用,把gb2312置换成utf-8:

$text=iconv("GB2312","UTF-8",$text);

在用$text=iconv("UTF-8","GB2312",$text)过程中,如果遇到一些特别字符时,如:"—",英文名中的"."等等字符,转换就断掉了。这些字符后的文字都没法继续转换了。

针对这的问题,可以用如下代码实现:

$text=iconv("UTF-8","GBK",$text);

你没有看错,就这么简单,不使用gb2312,而写成GBK,就可以了。

还有一种方法,第二个参数,加上//IGNORE,忽略错误,如下:

iconv("UTF-8","GB2312//IGNORE",$data);

没有具体比较这两种方法,感觉第一种(GBK代替gb2312)方法更好。

php手册中iconv() 说明:

iconv
(PHP 4 >= 4.0.5, PHP 5)
iconv – Convert string to requested character encoding
Description
string iconv ( string in_charset, string out_charset, string str )
PerfORMs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure.
If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character.

在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。此时可以使用以下方法解决:

$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));

即在第二个参数出添加红色字部分,表示:如果在目标编码中找不到与源编码相匹配的字符,会选择相似的字符进行转换。此处也可以使用://IGNORE 这个参数,表示忽略不能转换的字符。

ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。

iconv不是php的默认函数,也是默认安装的模块。需要安装才能用的。

如果是windows2000+php,你可以修改php.ini文件,将extension=php_iconv.dll前的";"去掉,同时你要copy你的原php安装文件下的iconv.dll到你的winnt/system32下(如果你的dll指向的是这个目录)。在linux环境下,用静态安装的方式,在configure时加多一项 --with-iconv就可以了,phpinfo看得到iconv的项。(Linux7.3+Apache4.06+php4.3.2)。

mb_convert_encoding与iconv函数介绍

mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。

做一个GBK To UTF-8:

<?php 
header("content-Type: text/html; charset=Utf-8"); 
echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK"); 
?>

再来个GB2312 To Big5:

<?php 
header("content-Type: text/html; charset=big5"); 
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312"); 
?>

不过要使用上面的函数需要安装但是需要先enable mbstring 扩展库。

string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;

string iconv ( string in_charset, string out_charset, string str )注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。

一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数。

$content = iconv("GBK", "UTF-8″, $content);
$content = mb_convert_encoding($content, "UTF-8″, "

--结束END--

本文标题: php字符串乱码怎么解决

本文链接: https://www.lsjlt.com/news/470.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php字符串乱码怎么解决
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php字符串乱码怎么解决?PHP iconv()函数字符编码转换的问题在php中iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库;...
    99+
    2015-07-03
    php 乱码
  • 如何解决php字符串乱码
    本篇内容介绍了“如何解决php字符串乱码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php字符串乱码的解决办法:1、通过iconv把gb2...
    99+
    2023-06-25
  • java字符串中文乱码怎么解决
    在Java中,解决字符串中文乱码问题可以采取以下几种方法:1. 使用正确的字符编码:在Java中,字符串编码默认使用的是UTF-8编...
    99+
    2023-08-11
    java
  • php字符串部分乱码如何解决
    本篇内容主要讲解“php字符串部分乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php字符串部分乱码如何解决”吧!php字符串部分乱码的解决办法:1、使用“mb_substr...
    99+
    2023-07-05
  • java字符串乱码如何解决
    Java字符串乱码的解决方法有以下几种:1. 确保源文件的编码与Java编译器的编码一致。可以在编写Java源文件时,使用指定编码格...
    99+
    2023-08-31
    java
  • c++字符串拼接出现乱码怎么解决
    在C++中,字符串拼接可能会导致乱码的问题,主要是由于编码不一致或字符串中包含特殊字符。以下是一些解决乱码问题的方法:1. 确保字符...
    99+
    2023-10-26
    c++
  • php字符串部分乱码怎么办
    php字符串部分乱码的解决办法:1、使用“mb_substr(strip_tags($str),0,-1,'UTF-8');”截取字符串;2、使用“iconv("UTF-8",&quo...
    99+
    2023-05-14
    php 乱码 字符串
  • golang字符乱码怎么解决
    本篇内容介绍了“golang字符乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是字符乱码字符乱码是指在文本中出现了无法正确解...
    99+
    2023-07-06
  • php 16进制转字符串出现中文乱码怎么解决
    在使用 PHP 进行 16 进制转字符串操作时,有时会出现中文乱码的问题。这个问题可能出现在很多情况下,比如从数据库中读取数据时,或者是接受用户输入时。本文将介绍一些常见的中文乱码问题,并提供一些解决方法。从数据库中读取数据时出现中文乱码如...
    99+
    2023-05-14
    php
  • PHP字符集编码出现乱码怎么解决
    这篇文章主要讲解了“PHP字符集编码出现乱码怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP字符集编码出现乱码怎么解决”吧!要么页面原始汉字和从数据库里取出的汉字全是乱码;要么原...
    99+
    2023-06-17
  • php怎么实现字符串无乱码翻转
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php怎么实现字符串无乱码翻转PHP中实现中文字符串反转避免乱码的方法 : 今天博主在网上看PHP面试题的时候,看到了这么一个问题,如何实现字符串反转,当时想不是有一...
    99+
    2016-11-27
    php 翻转
  • 如何解决php截取中文字符串乱码问题
    这篇文章主要介绍“如何解决php截取中文字符串乱码问题”,在日常操作中,相信很多人在如何解决php截取中文字符串乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决php截取中文字符串乱码问题”的疑...
    99+
    2023-06-20
  • php向mysql数据库传入字符串乱码如何解决
    今天小编给大家分享一下php向mysql数据库传入字符串乱码如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php向m...
    99+
    2023-07-05
  • php中使用substr截取字符串乱码的解决方法
    这篇文章主要介绍php中使用substr截取字符串乱码的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php substr截取字符串乱码的解决办法:1、使用mbstring扩展库的“mb_substr...
    99+
    2023-06-14
  • 使用php分割字符串时出现乱码如何解决
    今天就跟大家聊聊有关使用php分割字符串时出现乱码如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。php分割字符串乱码的解决办法:1、通过使用mbstring扩展库的“mb_s...
    99+
    2023-06-14
  • oracle 修改字符集乱码怎么解决
    oracle 修改字符集乱码解决方法:1、找到TNSNAMES.ORA文件在里面找到要连接的数据库的别名,设置环境变量NLS_LANG,打开SQL*Plus,使用以上配置连接到数据库;2、创建一个存放中文字符的表,在存放中文字符的字段中插入...
    99+
    2023-07-10
  • php 16进制转字符串出现中文乱码如何解决
    本篇内容介绍了“php 16进制转字符串出现中文乱码如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!从数据库中读取数据时出现中文乱码如...
    99+
    2023-07-05
  • 如何解决php odbc 字符乱码问题
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑如何解决php odbc 字符乱码问题?问题描述:php用ODBC连接sql server输出乱码!!! <php @header("Content-Ty...
    99+
    2014-08-21
    php odbc
  • ajax回调函数返回的字符串乱码问题怎么解决
    本篇内容主要讲解“ajax回调函数返回的字符串乱码问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax回调函数返回的字符串乱码问题怎么解决”吧! ...
    99+
    2022-10-19
  • php向mysql数据库传入字符串乱码怎么办
    php向mysql数据库传入字符串乱码的解决办法:1、通过“show variables like 'character%';”查看数据库编码方式;2、通过“set character_set_server = 'u...
    99+
    2023-05-14
    php 数据库 乱码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作