- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PHP中iconv函数知识汇总由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
今天在修改论文在线的时候,遇到了iconv这个函数。学习一下 。
1
2
3
4
|
header(
'Content-Type: application/vnd.ms-excel;charset=UTF-8"'
);
$name
=iconv(
'utf-8'
,
'gb2312'
,
$data
[
'year'
].
'年,第'
.
$data
[
'period'
].
'期通信录'
);
header(
'Content-Disposition: attachment;filename="'
.
$name
.
'.xls"'
);
header(
'Cache-Control: max-age=0'
);
|
这段代码的意思,就是把utf-8格式转化为gb2312的格式,然后赋值给$name,这样导出excel文件的名字的时候,就是中文的$name的名字。 下边是关于这个函数的详细和延伸用法 。
1
|
iconv(
"UTF-8"
,
"GB2312//IGNORE"
,
$data
)
|
ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存.
这个iconv()这个函数,在php5中是内置的.谢谢. 。
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?php
echo
$str
=
'你好,这里是卖咖啡!'
;
echo
'<br />'
;
echo
iconv(
'GB2312'
,
'UTF-8'
,
$str
);
//将字符串的编码从GB2312转到UTF-8
echo
'<br />'
;
echo
iconv_substr(
$str
, 1, 1,
'UTF-8'
);
//按字符个数截取而非字节
print_r(iconv_get_encoding());
//得到当前页面编码信息
echo
iconv_strlen(
$str
,
'UTF-8'
);
//得到设定编码的字符串长度
//也有这样用的
$content
= iconv(
"UTF-8"
,
"gbk//TRANSLIT"
,
$content
);
?>
|
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), 。
下载:ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz 安装:
1
2
3
4
5
|
#cp libiconv-1.8.tar.gz /usr/local/src
#tar zxvf lib*
#./configure --prefix=/usr/local/libiconv
#make
#make install
|
编译php 。
#./configure --prefix=/usr/local/php4.3.2 --with-iconv=/usr/local/libiconv/ 。
使用的简单例子:
1
2
3
|
<?php
echo
iconv(
"gb2312"
,
"ISO-8859-1"
,
"我们"
);
?>
|
PHP中的mb_convert_encoding与iconv函数介绍 。
mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。 不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码.
mb_convert_encoding的用法见官方: http://cn.php.net/manual/zh/function.mb-convert-encoding.php 。
做一个GBK To UTF-8 。
1
2
3
4
|
< ?php
header(
"content-Type: text/html; charset=Utf-8"
);
echo
mb_convert_encoding(
"妳係我的友仔"
,
"UTF-8"
,
"GBK"
);
?>
|
再来个GB2312 To Big5 。
1
2
3
4
|
< ?php
header(
"content-Type: text/html; charset=big5"
);
echo
mb_convert_encoding(
"你是我的朋友"
,
"big5"
,
"GB2312"
);
?>
|
不过要使用上面的函数需要安装但是需要先enable mbstring 扩展库.
PHP中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似.
下面还有一些详细的例子:
1
2
3
4
|
iconv — Convert string to requested character encoding
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding
(PHP 4 >= 4.0.6, PHP 5)
|
用法:
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 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。 Returns the converted string or FALSE on failure. 。
使用:
发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug. 。
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数. 。
from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used. /* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */ $str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”); /* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */ $str = mb_convert_encoding($str, “EUC-JP”, “auto”),
例子:
1
2
|
$content
= iconv(”GBK”, “UTF-8″,
$content
);
$content
= mb_convert_encoding(
$content
,
"UTF-8″,"
GBK");
|
php中使用iconv函数时容易忽略的参数 。
今天在处理抓取内容的时候,当采用iconv进行编码转换的时候,发现结果会中断,猜是字符集的问题,考虑怎么跳过目标字符集不存在的字符,查手册发现iconv的函数只有三个参数,好像不行,然后查网上有人说可以,但是很奇怪怎么实现,最后发现英文描述有说可以加标识到目标编码后面:“TRANSLIT”,很郁闷怎么加呢?原来是先加“//”,真是郁闷,竟然有这样的设计 原型: $txtContent = iconv("utf-8",'GBK',$txtContent),
特殊参数:iconv("UTF-8","GB2312//IGNORE",$data) 。
两个可选的辅助参数:TRANSLIT和IGNORE ,(其中IGNORE 就是说遇到无法转换的就跳过).
以上所述就是本文的全部内容了,希望大家能够喜欢.
最后此篇关于PHP中iconv函数知识汇总的文章就讲到这里了,如果你想了解更多关于PHP中iconv函数知识汇总的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!