将字符串 由一个字符集 转成 另一个字符集 及 随机生成中文

今天遇到了一个麻烦 字符集的转换

因为这个网页是utf-8的  但是他获取了一个gbk的数据库 所以为了统一字符集必须要将获取的gbk数据转成utf-8

刚开始我的思路是acsii值得转换  先以gbk的字符集获取数据 然后 用mb_substr($str,$start,$len,‘gbk‘) 来截取一个中文

然后在用ord()获取他的ascii值 之后用chr() 把ascii值转成中文   原理:字符的ascii是不变的  无论它是gbk 还是 utf-8

但是我发现输出的是一个乱码【无论是gbk 还是uft-8】这样更惨

           $str=‘结婚多久啊哈卡斯卡‘;
           $str_len =  strlen($str);
           for($i=0; $i<$str_len; $i++){
               $chars = mb_substr($str, $i, 2,‘gbk‘);
               $num = ord($chars);
               echo chr($num);
           }

然后我查了一些资料发现: 中文是由两个字节的ascii码组成的       chr($num).chr($num)           这才能组合成一个中文

如:随机生成中文:  echo chr(rand(0xB0,0xCC)).chr(rand(0xA1,0xBB));

但是我用ord() 获取中文的ascii 再用两个chr()连接去了发现获取的的中文已经不是原来的了  所以这种方法失败

经过N次的搜索终于发现 万能的php已经帮我们搞定了   嗨我也是受不了啦

          // iconv — 字符串按要求的字符编码来转换 

           $str = iconv(‘gbk‘,‘utf-8‘,$str); 

         //把$str 由 gbk 转换成  utf-8 

         //可以再手册里好好看看  iconv系列 的函数

2015-04-20   21:34:52

时间: 2024-10-27 05:45:53

将字符串 由一个字符集 转成 另一个字符集 及 随机生成中文的相关文章

python内置的一个好玩的函数-zip,并且巧妙的实现按概率随机生成有限个数的字符串。

python有一个比较有意思的内置函数-----zip,可以把传入的两组list进行一个组合变形,再输出子元素为tuple的list,不过变形的方式比较抽象. 举个例子: A=[1,2,3,4,5,6] B=['a','b','c','d'] v1=zip(A,B) v1的结果为: [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')] 比较直观的理解就是,A和B是两道拉链上的扣子,生成的list的子tuple,每一组tuple就是一对扣好了的扣子,并且从每组list的

SpriteKit游戏Delve随机生成地牢地图一个Bug的修复

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) Delve是一个很有意思的地牢探险类型的游戏,其中每一关的地图都是随机生成的. 至于如何在生成地图时兼顾随机性和一定模式,网上有很多不错的建议.你也可以从Delve的源代码中找到答案(如果学习目的需要源代码的可以Q我,或者自行度娘) 这里只是谈一下源代码中有一个小bug,我们看如何修复它! 随机生成地图是放在LevelHelper.swift文件中,其中结构t

String-需求把一个字符串的首字母转成大写,其余为小写(只考虑英文大小写字母字符)

package cn.lianxi; public class DaXiao { public static void main(String[] args) { /*需求把一个字符串的首字母转成大写,其余为小写(只考虑英文大小写字母字符) * 分析: * 1.先获取第一个字符 * 2.获取除了第一个字符的以外字符 * 3.把第一个字符转成大写 * 4.把第一个字符转成大写 * 5.把除第一个字符以外的字符转成小写 * 6.字符串拼接 * */ String str = "helloWORLD&

【C语言】字符串替换空格:实现一个函数,把字符串里的空格替换成“%20”

//字符串替换空格:实现一个函数,把字符串里的空格替换成"%20" #include <stdio.h> #include <assert.h> void replace(char *src) { assert(src); int OldLen = 0; //原字符串长度 int NewLen = 0; //新字符串长度 int BlackNum = 0; //空格数量 int NewBack = 0; //新字符串尾部 int OldBack = 0; //原

编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成

编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成.“组合 ”的规则如下: 1). str中的每个字母要么来自于part1,要么来自于part2; 2). part1和part2中字母的顺序与str中字母的顺序相同. 例如: "codewars"由"cdw"和"oears"组合而成: s: c o d e w a r s = codewars part1: c d w = cdw part2

面试题5:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 注意从后向前替换,使得时间复杂度为O(n); public class Main { public static void main(String[] args) { Main main01=new Main(); String str=main01.replaceSpace(new StringBuffer("old s

请实现一个函数,把字符串中的每一个空格替换成“%20”,比如输入 “We are Happly。” 则输出“we%20are%20happy。”

请实现一个函数,把字符串中的每一个空格替换成"%20",比如输入 "We are Happly."  则输出"we%20are%20happy. " void ReplaceBlank(char String[],int length) { //originalLength 为字符串string的实际长度 //length字符串的总容量 int originalLength  = 0; int numberOfBlank = 0; int i =

字符串转换:字符串中的&#39;aa&#39;转换成&#39;bb&#39;,但是如果是&#39;a&#39;、&#39;aaa&#39;等,则不进行转换

代码: public void transferString(String str) { //0.条件初始化 char[] cArr = str.toCharArray(); //将字符串转为字符数组处理 char[] flagArr = new char[cArr.length]; //字符数组标记,判断是否转换 for(int i = 0; i < flagArr.length; i++) { //字符数组初始为0 flagArr[i] = '0'; } //1.循环遍历数组,每次处理一个或

Petrozavodsk Winter-2013. Ural FU Contest Problem D. Five Palindromes manacher、一个串切割成5个回文子串、优化

Ural Federal University Contest, SKB Kontur Cup Petrozavodsk Winter Training Camp, Saturday, February 2, 2013 Problem D. Five Palindromes Input file: input.txt Output file: output.txt Time limit: 2 seconds (3 seconds for Java) Memory limit: 256 mebib