求助各位高手!(给分50)

sunauqt 2002-08-14 01:18:36
比如有一个变量$content,假设其值为“第一条信息,这是测试!”,(可以是任何的字符串)现在我想截取他的前10个字符,可是截取后的字符串却有了乱码,还望各位兄弟指点迷津!
...全文
49 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tl66 2002-09-29
  • 打赏
  • 举报
回复
在perl5.6以前的版本中, 所有字符都被看成一个字节序列,不过,在perl5.6以后的版本中, 一个字符串因为可能包含一些比一个字节宽的字符,我们可以不把字符串看作一个字节序列,而是一个数字序列,当然,其中对于字符的编码,涉及到什么定长8位字符和变长UTF-8字符之间的转换,这样在字符语义下,就可以使用原来的substr()函数了,对于这个我具体也不清楚,感兴趣可以看看相关的资料
D_Q 2002-09-28
  • 打赏
  • 举报
回复
先GZ一下回头给你决绝 这个问题!呵呵!困了 累了 睡了……
sunauqt 2002-08-14
  • 打赏
  • 举报
回复
Sorry!
tl66 2002-08-14
  • 打赏
  • 举报
回复
还有, 你的回话语气令我十分不舒服 !!大家在共同学习嘛 !!
tl66 2002-08-14
  • 打赏
  • 举报
回复
不是一半汉字, 而是乱码了 !!
如果在一个变量上即有汉字,又有英文字母, 在我的理解就比较麻烦了,照我的做法我只有显记录下变量上所有英文字母段所在的位置,然后在根据所要取得的区域来决定起始位置,字节长度了……
不知有什么其他好的方法,我也想知道 ^_^
sunauqt 2002-08-14
  • 打赏
  • 举报
回复
那中间的非汉字字符呢?如果都是取2倍的话,岂不是要出问题了?比如有一个变量值是$content = “a的值是一,B的值是2“,按这位老兄的想法,如果$letter = substr($content,0,2),岂不是取出的值是a和一半汉字了吗?
tl66 2002-08-14
  • 打赏
  • 举报
回复
汉字是两个字节,所以在提取的时候起始位置,长度必须是2的倍数
比如$letter = substr($content,$start*2,$length*2); print $letter."\n";

2,203

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 CGI
社区管理员
  • CGI社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧