gbk转utf-8 再url编码

合集下载

怎样解决帝国GBK转UTF-8的问题

怎样解决帝国GBK转UTF-8的问题
网站安装成功后,接着就是上传以前备份的网站数据。数据全部上传成功后,接着就在帝国后台备份/恢复数据处恢复数据,过了1分钟,数据恢复完毕,以为所有的事情大功告成。进行数据更新后,进入首页发现页面一片空白,什么也没有。这下我傻眼,刷新了好几十次问题依旧,看来是真的出问题啦。
这时我才慢慢意识到,问题的根源是网站备份的数据我重新安装的帝国cms程序的编码不对。备份的数据当时是在简体gbk 的编码模式下备份的,而我重新安装的程序是utf-8的。网站内容显示不出来就不足为奇了。
但是有没有什么办法把代码转换呢?
于是我试着在帝国cms后台的模板管理里把修改首页模板的gb2312改为utf-8,然后ቤተ መጻሕፍቲ ባይዱ据更新首页。哇塞,首页能显示内容了,说明这个方法是可行的。
但是,随之而来的问题是,网站的页面和模板那么多,我一个个手动去改,不仅工作量大而且还会遗漏掉一些页面或模块。有没有什么更省时省力的办法呢?
这个办法终于被我摸索到了:
1、进入帝国cms后台模板管理右侧最下面的其他管理批量替换模板字符,进去以后原字符填写 gb2312 ,新字符填写 utf-8 ,选中全部替换。进行了这一步后,为了保险起见,最好进入数据更新按照帝国cms的网站迁移教程更新数据。此时,网站首页,内容页应该都不会有乱码啦。
第一次用帝国cms时下载的是简体gbk 版本的,后来由于虚拟主机挂掉了,网站就没有去管它了,不过还好我备份了数据。
过了一段时间后,还是想把网站再重新恢复起来,当然还是得用帝国cms的程序。但是这次我下的简utf-8 版本的。我根本不知道这会给我的网站带来什么致命的后果。
将下载的简体utf-8 版本用ftp软件上传到虚拟主机,然后安装,一路顺利,满心窃喜,以为网站恢复也太简单了,马上就能成功啦。

将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)

将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)

将编码从GB2312转成UTF-8的⽅法汇总(从前台、程序、数据库)⼀个⽹站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意,如果没有转换彻底,将会有很多的编码问题出现!主要有五个⽅⾯:⼀..HTML页⾯转UTF-8编码问题⼆.PHP页⾯转UTF-8编码问题三.MYSQL数据库使⽤UTF-8编码的问题四.JS相关的UTF-8编码问题五.FLASH相关的UTF-8编码问题⼀.HTML页⾯转UTF-8编码问题1.在后,之间有中⽂字符的话,显⽰的标题有可能是乱码!2.html⽂件编码问题:点击编辑器的菜单:“⽂件”->“另存为”,可以看到当前⽂件的编码,确保⽂件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8。

3.HTML⽂件头BOM问题:将⽂件从其他的编码转换成UTF-8编码时,有时候会在⽂件的最开始加上⼀个BOM标签,在个BOM标签可能会导致浏览器在显⽰中⽂的时候出现乱码。

删除这个BOM标签的⽅法:1.可以⽤Dreamweaver打开⽂件,并重新保存,即可以去除BOM标签!2.可以⽤EditPlus打开⽂件,并在菜单“⾸选项”->“⽂件”->"UTF-8标识",设置为:“总是删除签名”,然后保存⽂件,即可以去除BOM标签!4.WEB服务器UTF-8编码问题:如果你按以上所列的步骤做了,还是有中⽂乱码问题,请检查你的所使⽤的WEB服务器的编码问题如果你使⽤的是Apache,请将配置⽂件⾥的:charset 设成:utf-8(这⾥仅列出⽅法,具体格式请参考apache的配置⽂件)。

如果你使⽤的是Nginx,请将nginx.conf⾥的:charset 设成 utf-8,具体找到 "charset gb2312;"或者类似的语句,改成:"charset utf-8;”。

⼆.PHP页⾯转UTF-8编码问题1.在代码开始出加⼊⼀⾏:header("Content-Type: text/html;charset=utf-8");2.PHP⽂件编码问题点击编辑器的菜单:“⽂件”->“另存为”,可以看到当前⽂件的编码,确保⽂件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8。

url 字符串转义方式

url 字符串转义方式

url 字符串转义方式
URL字符串转义是指将URL中的特殊字符转换为特定的编码格式,以便在网络传输中能够被正确识别和处理。

常见的URL字符串
转义方式是使用百分号编码(Percent Encoding),也称为URL编码。

在URL编码中,特殊字符被替换为%加上其对应的ASCII码值的
十六进制表示。

具体来说,URL字符串转义方式包括以下几个步骤:
1. 对URL中的每个字符进行遍历。

2. 对于字母、数字以及部分特殊字符(例如-_.~),保持不变。

3. 对于其他特殊字符,将其转换为%加上其对应的ASCII码值
的十六进制表示。

例如,空格字符(ASCII码值为32)会被转义
为%20。

4. 对于非ASCII字符,采用UTF-8编码后再进行URL编码。

需要注意的是,URL字符串转义是为了确保URL中的特殊字符
能够被正确解析和处理,以避免造成歧义或错误。

常见的需要进行URL转义的特殊字符包括空格、问号、哈希符号、斜杠等。

在实际开发中,可以使用编程语言提供的URL编码函数或者库来进行URL 字符串转义,以确保URL的正确性和可靠性。

总之,URL字符串转义方式是通过将URL中的特殊字符转换为特定的编码格式,以确保在网络传输中能够被正确识别和处理,从而保证URL的正确性和可靠性。

Javagbk转utf-8

Javagbk转utf-8

Javagbk转utf-81、⽂件转码:使⽤脚本gbk转utf-8的脚本⽂件:#!/bin/bashFILE_SUFFIX="java xml html vm js"# FILE_SUFFIX="vm"file_names=""for x in $FILE_SUFFIXdofile_names=`find . -name "*.$x" | xargs file -I | grep -v utf-8 | awk -F " |:" '{print $1}'`for file_name in $file_namesdo# echo $file_nameiconv -f cp936 -t UTF-8 $file_name >$file_name".new" &&mv -f "$file_name.new" "$file_name"doneecho "$x ok"donefind . -name "*.xml" | xargs sed -i "" "/<?xml/s/GBK/UTF-8/g"find . -name "*.xml" | xargs sed -i "" "/<?xml/s/GB2312/UTF-8/g"echo "xml head is ok!"find . -name "pom.xml" | xargs sed -i "" "/<encoding>/s/GBK/UTF-8/g"find . -name "pom.xml" | xargs sed -i "" "/<encoding>/s/GB2312/UTF-8/g"find . -name "pom.xml" | xargs sed -i "" "/project.build.sourceEncoding/s/GBK/UTF-8/g"find . -name "pom.xml" | xargs sed -i "" "/project.reporting.outputEncoding/s/GBK/UTF-8/g"find . -name "pom.xml" | xargs sed -i "" "s/pop-vender-common-pageframe/pop-vender-common-pageframe-utf8/g" echo "pom.xml is ok!"find . -name "*.properties" | xargs sed -i "" "/input.encoding/s/GBK/UTF-8/g"find . -name "*.properties" | xargs sed -i "" "/output.encoding/s/GBK/UTF-8/g"echo "velocity properties is OK!"find . -name "strut*.xml" | xargs sed -i "" '/struts.i18n.encoding/s/GBK/UTF-8/g'echo "struts xml is ok!"find . -name "*.vm" | xargs sed -i "" "s/\/common\/js\/jdmsg\/jd-msg.js/\/common\/js\/jdmsg\/jd-msg-utf8.js/g" find . -name "*.vm" | xargs sed -i "" "/\/ui.datepicker.js/s/<script t/<script charset=\"GBK\" t/g"find . -name "*.vm" | xargs sed -i "" "/\/jquery-calendar.js/s/<script t/<script charset=\"GBK\" t/g"echo "vm is ok"echo "finished"# echo $file_names2、⽂件转码后,本地环境改成utf-8环境,可能会有部分乱码⽂件,⼿动修复3、含有中⽂js引⽤增加charset="gbk"如依赖:、4、打包编译编码:替换成UTF-85、xml设置格式:以前可能为gbk或gb2312,改成utf-86、web.xml转成UTF-8,请求拦截器字符编码如使⽤spring配置<!--Character Encoding filter(字符集拦截转换) --><filter><filter-name>charsetFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter>7、代码GBK使⽤主要是代码⾥⾯写死GBK⽅式如string.getBytes("GBK")替换8、jdurl配置编码增加<property name="charsetName" value="utf-8"/>避税分页中含有中⽂乱码如:jdurl的编码设置:<bean class="ponent.url.PopJdUrl"><property name="url" value="${pop-vender.login.address}"/><property name="charsetName" value="utf-8"/></bean>⼤概是这8条重点在后⾯:这时你会发现,页⾯的get请求请求服务器时还是会出现乱码,别慌,那是因为tomcat的编码你还没有设置.利⽤request.setCharacterEncoding("UTF-8");来设置Tomcat接收请求的编码格式,只对POST⽅式提交的数据有效,对GET ⽅式提交的数据⽆效!要设置GET的编码,可以修改server.xml⽂件中,相应的端⼝的Connector的属性:URIEncoding="UTF-8",这样,GET⽅式提交的数据才会被正确解码。

PHP数组编码gbk与utf8互相转换的两种方法

PHP数组编码gbk与utf8互相转换的两种方法

PHP数组编码gbk与utf8互相转换的两种⽅法⼀、利⽤var_export(), eval()⽅法/*** 将含有GBK的中⽂数组转为utf-8** @param array $arr 数组* @param string $in_charset 原字符串编码* @param string $out_charset 输出的字符串编码* @return array*/function array_iconv($arr, $in_charset="gbk", $out_charset="utf-8"){$ret = eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));return $ret;// 这⾥转码之后可以输出json// return json_encode($ret);}原理很简单var_export设置第⼆个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再⽤eval来执⾏返回(类似匿名函数?),⾄此完美解决问题。

eval() 函数⼩结:条件:eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

如果没有在代码字符串中调⽤return 语句,则返回NULL。

如果代码中存在解析错误,则eval() 函数返回 false。

$a ="hello";$res = eval("return $a;");print_r($res);// 在赋值时必须⽤反斜杠对$标⽰符进⾏转义eval("\$str = \"$str\";");echo $str;⼆、利⽤递归将数组转码/*** UTF-8编码 GBK编码相互转换/(⽀持数组)** @param array $str 字符串,⽀持数组传递* @param string $in_charset 原字符串编码* @param string $out_charset 输出的字符串编码* @return array*/function array_iconv($str, $in_charset="gbk", $out_charset="utf-8"){if(is_array($str)){foreach($str as $k => $v){$str[$k] = array_iconv($v);}return $str;}else{if(is_string($str)){// return iconv('UTF-8', 'GBK//IGNORE', $str);return mb_convert_encoding($str, $out_charset, $in_charset);}else{return $str;}}}总结PHP将数组编码gbk和utf-8相互转换的内容到这就基本结束了,⽂章介绍的很详细,具有⼀定的参考价值,希望这篇⽂章对⼤家的学习和⼯作能带来⼀定的帮助。

解决GBK字符转UTF-8乱码问题

解决GBK字符转UTF-8乱码问题

解决GBK字符转UTF-8乱码问题gbk转utf-8,奇数中⽂乱码。

⼀、乱码的原因gbk的中⽂编码是⼀个汉字⽤【2】个字节表⽰,例如汉字“内部”的gbk编码16进制的显⽰为c4 da b2 bfutf-8的中⽂编码是⼀个汉字⽤【3】个字节表⽰,例如汉字“内部”的utf-8编码16进制的显⽰为e5 86 85 e9 83 a8很显然,gbk是⽆法直接转换成utf-8,少字节变为多字节⼆、转换的办法1.⾸先将gbk字符串getBytes()得到两个原始字节,转换成⼆进制字符流,共16位。

2.根据UTF-8的汉字编码规则,⾸字节以1110开头,次字节以10开头,第3字节以10开头。

在原始的2进制字符串中插⼊标志位。

最终的长度从16--->16+3+2+2=24。

3.转换完成通过以下⽅法将GBK字符转成UTF-8编码格式的byte【】数组1. package test;2.3. import java.io.UnsupportedEncodingException;4.5. public class TestEncoder {6.7. /**8. * @param args9. */10. public static void main(String[] args) throws Exception {11. String gbk = "iteye问答频道编码转换问题";12.13. String iso = new String(gbk.getBytes("UTF-8"),"ISO-8859-1");14.15. System.out.println(iso);16.17. String utf8 = new String(iso.getBytes("ISO-8859-1"),"UTF-8");18. System.out.println(utf8);19.20. System.out.println(getUTF8StringFromGBKString(gbk));21. }22.23. public static String getUTF8StringFromGBKString(String gbkStr) {24. try {25. return new String(getUTF8BytesFromGBKString(gbkStr), "UTF-8");26. } catch (UnsupportedEncodingException e) {27. throw new InternalError();28. }29. }30.31. public static byte[] getUTF8BytesFromGBKString(String gbkStr) {32. int n = gbkStr.length();33. byte[] utfBytes = new byte[3 * n];34. int k = 0;35. for (int i = 0; i < n; i++) {36. int m = gbkStr.charAt(i);37. if (m < 128 && m >= 0) {38. utfBytes[k++] = (byte) m;39. continue;40. }41. utfBytes[k++] = (byte) (0xe0 | (m >> 12));42. utfBytes[k++] = (byte) (0x80 | ((m >> 6) & 0x3f));43. utfBytes[k++] = (byte) (0x80 | (m & 0x3f));44. }45. if (k < utfBytes.length) {46. byte[] tmp = new byte[k];47. System.arraycopy(utfBytes, 0, tmp, 0, k);48. return tmp;49. }50. return utfBytes;51. }52. }或者:1. public static void gbk2Utf() throws UnsupportedEncodingException {2. String gbk = "我来了";3. char[] c = gbk.toCharArray();4. byte[] fullByte = new byte[3*c.length];5. for (int i=0; i<c.length; i++) {6. String binary = Integer.toBinaryString(c[i]);7. StringBuffer sb = new StringBuffer();8. int len = 16 - binary.length();9. //前⾯补零10. for(int j=0; j<len; j++){11. sb.append("0");12. }13. sb.append(binary);14. //增加位,达到到24位3个字节15. sb.insert(0, "1110");16. sb.insert(8, "10");17. sb.insert(16, "10");18. fullByte[i*3] = Integer.valueOf(sb.substring(0, 8), 2).byteValue();//⼆进制字符串创建整型19. fullByte[i*3+1] = Integer.valueOf(sb.substring(8, 16), 2).byteValue();20. fullByte[i*3+2] = Integer.valueOf(sb.substring(16, 24), 2).byteValue();21. }22. //模拟UTF-8编码的⽹站显⽰23. System.out.println(new String(fullByte,"UTF-8"));24. }。

如何解决GBK的编码的文件中的中文转换成为UTF-8编码的文件而且不乱码

如何解决GBK的编码的文件中的中文转换成为UTF-8编码的文件而且不乱码

如何解决GBK的编码的⽂件中的中⽂转换成为UTF-8编码的⽂件⽽且不乱码⾸先我们必须明确⼀点,为什么正常转换会乱码?因为我们的数据写⼊是GBK写⼊的,然后展⽰的话是按照⽂件保存形势展⽰的,前⾯保存形势是GBK,⼀致,所以不乱码,⽽后⾯将保存形势变成了UTF-8,但是写⼊的内容是GBK形势的,编码解码⽅式不⼀致,所以产⽣乱码。

我们⼀般的解决乱码的思路是:String s=new String(str.getBytes("GBK"),"UTF-8");我将它解决的思路也是这样⼦的:⾸先我们知道引起乱码的只是因为中⽂,中⽂乱码的⽅式看起来就是上⾯那样解决的。

将⽂件的编码改变,⽽且⾥⾯的内容的编写编码也随之改变,很显然不是单纯地对⽂件进⾏格式改变,改变格式的同时必定要改变⽂件的内容。

我的初步想法:将⽂件内容读取到流中,然后按指定编码写⼊到⽬标⽂件中。

过程:将⽬标⽂件取读到流中读取源⽂件中的信息⽤字符串的形式展⽰,将字符串写⼊⽬标⽂件注意问题:1、读取⽬标⽂件默认读取编码是当前项⽬编码⽽不是源⽂件编码,我们可以使⽤FileInputStream的含有编码⽅式的构造达到我们的要求2、取读每⼀⾏字符串后的写⼊其实是不需要转换字符串格式的。

就像我就犯了⼀个错误,我前⾯将读取成功的字符串通过newString(getBytes("GBK"),"UTF-8");的形式再次写⼊⽂件中,导致⼀直乱码,忽略了⼀个问题,就是我读取⽂件的时候其实已经解码了,此时字符串的编码⽅式应该就是我的项⽬编码⽅式了。

3、读取完⼀⾏数据记得的换⾏其他的问题就是:将⽂件夹中的所有指定⽂件都进⾏编码格式的改变,⼀个递归调⽤指定⽅法的过程罢了!代码实现:import mons.io.IOUtils;import java.io.*;import java.util.ArrayList;/*** Created by Administrator on 2016/12/1.*/public class Test {String ROUTE_URL="D:/test";String srcEncode;ArrayList<File> fileArray=new ArrayList<File>();public void trans(String filePath) throws Exception{getFileClass(new File(filePath));for (File file:fileArray){transEncode(file.getAbsolutePath());}}/*** 将⽂件由GBK格式读取,UTF-8格式写⼊* 运⾏的项⽬应该是UTF-8的项⽬* filePath⽤相对路径⽅便转移。

GBK、UTF8、UNICODE编码转换

GBK、UTF8、UNICODE编码转换

GBK、UTF8、UNICODE编码转换1 string GBKToUTF8(const std::string& strGBK)2 {3 int nLen = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);4 WCHAR * wszUTF8 = new WCHAR[nLen];5 MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, wszUTF8, nLen);67 nLen = WideCharToMultiByte(CP_UTF8, 0, wszUTF8, -1, NULL, 0, NULL, NULL);8 char * szUTF8 = new char[nLen];9 WideCharToMultiByte(CP_UTF8, 0, wszUTF8, -1, szUTF8, nLen, NULL, NULL);1011 std::string strTemp(szUTF8);12 delete[]wszUTF8;13 delete[]szUTF8;14 return strTemp;15 }1 string UTF8ToGBK(const std::string& strUTF8)2 {3 int nLen = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);4 unsigned short * wszGBK = new unsigned short[nLen + 1];5 memset(wszGBK, 0, nLen * 2 + 2);6 MultiByteToWid 8 nLen = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, NULL, 0, NULL, NULL); 9 char *szGBK = new char[nLen + 1];10 memset(szGBK, 0, nLen + 1);11 WideCharToMultiByte(CP_ACP,0, (LPWSTR)wszGBK, -1, szGBK, nLen, NULL, N 13 std::string strTemp(szGBK);14 delete[]szGBK;15 delete[]wszGBK;16 return strTemp;17 }1 std::string Gbk2Unicode(std::string &strValue)2 {3 std::string strReturn;4 unsigned char chTemp;5 int nLength = strValue.length()*4+1;6 WCHAR *pwchBuf = new WCHAR[nLength];7 memset(pwchBuf, 0, sizeof(WCHAR) * nLength); 89 MultiByteToWideChar(CP_ACP, 0, strValue.c_str(), -1, (LPWSTR)pwchBuf, nLength);1011 for (size_t i = 0; i < wcslen(pwchBuf); i++)12 {13 strReturn += "\\u";14 chTemp = *((unsigned char*)pwchBuf+i*2+1);15 if(chTemp)16 {17 strReturn += m_clsmyOpenssl.char_to_hex( (unsigned char)(chTemp >> 4) );18 1 std::string Unicode2GBK(std::string &strValue) 2 { 3 std::vector<std::string> vcString; 4 MyTools::SplitString(strValue, "\\u", vcString); 56 wchar_t* pwBuf = new wchar_t[strValue.length() + 1];7 memset(pwBuf, 0, (strValue.length() + 1)* sizeof(wchar_t)); 89 int j(0);1011 for(std::vector<std::string>::iterator it = vcString.begin(); it != vcString.end(); ++it)12 {13 if (it->empty())14 {15 continue;16 }17 unsigned short wcTmp = 0;18 unsigned char cTmp = 0;1920 //因为有中⽂字符混合ASSCII码情况,所以条件为k < it->length()21 for(size_t k = 0; k < it->length(); ++k)22 {23 cTmp = (unsigned char)(*it)[k];2425 if(cTmp <= '9')//0x30~0x39 即0~926 {27 wcTmp |= (cTmp & 0x0f) << (it->length() - k - 1) * 4;28 }29 else if(cTmp >= 'a')//0x61~7a 即a~z30 {31 wcTmp |= (cTmp - 0x57) << (it->length() - k - 1) * 4;32 }33 else//0x41~5a 即A~Z34 {35 wcTmp |= (cTmp - 0x37) << (it->length() - k - 1) * 4;36 }37 }38 pwBuf[j++] = (wchar_t)wcTmp;39 }40 char *pDst = new char[strValue.length() + 1];41 memset(pDst, 0, (strValue.length() + 1) * sizeof(char));42 43 WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, (char*)pDst, strValue.length() - 1, NULL, NULL);44 std::string strRet(pDst);4546 delete[]pwBuf;47 pwBuf= NULL;4849 delete[]pDst;50 pDst=NULL;5152 return strRet;53 }。

用java程序将GBK字符转成UTF-8编码格式

用java程序将GBK字符转成UTF-8编码格式

用java程序将GBK字符转成UTF-8编码格式UTF 代表 UCS Transformation Format.UTF-8 采用变长度字节来表示字符,理论上最多可以到6 个字节长度(一个字符六个字节)。

UTF-8 编码兼容了 ASC II(0-127),也就是说 UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。

对于超过一个字节长度的字符,才用以下编码规范:左边第一个字节1的个数表示这个字符编码字节的位数,例如两位字节字符编码样式为为:110xxxxx 10xxxxxx;三位字节字符的编码样式为:1110xxxx 10xxxxxx 10xxxxxx.;以此类推,六位字节字符的编码样式为:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx。

xxx 的值由字符编码的二进制表示的位填入。

只用最短的那个足够表达一个字符编码的多字节串。

例如:Unicode 字符: 00 A9(版权符号) = 1010 1001,UTF-8 编码为:11000010 10101001 = 0x C2 0xA9;字符 22 60 (不等于符号) = 0010 0010 0110 0000,UTF-8 编码为:11100010 10001001 10100000 = 0xE2 0x89 0xA0代码1.package ng.string;2.3.public class ConverFromGBKT oUTF8 {4.public static void main(String[] args){5.6.try {7.8.ConverFromGBKToUTF8 convert = new ConverFromGBKToUTF8();9.byte [] fullByte = convert.gbk2utf8(chenese);10.String fullStr = new String(fullByte, "UTF-8");11.System.out.println("string from GBK to UTF-8 byte: " + fullStr);12.13.} catch (Exception e) {14. e.printStackTrace();15.}16.}17.18.public byte[] gbk2utf8(String chenese){19.char c[] = chenese.toCharArray();20.byte [] fullByte =new byte[3*c.length];21.for(int i=0; i<c.length; i++){22.int m = (int)c[i];23.String word = Integer.toBinaryString(m);24.// System.out.println(word);25.26.StringBuffer sb = new StringBuffer();27.int len = 16 - word.length();28.//补零29.for(int j=0; j<len; j++){30.sb.append("0");31.}32.sb.append(word);33.sb.insert(0, "1110");34.sb.insert(8, "10");35.sb.insert(16, "10");36.37.// System.out.println(sb.toString());38.39.String s1 = sb.substring(0,8);40.String s2 = sb.substring(8,16);41.String s3 = sb.substring(16);42.43.byte b0 = Integer.valueOf(s1, 2).byteValue();44.byte b1 = Integer.valueOf(s2, 2).byteValue();45.byte b2 = Integer.valueOf(s3, 2).byteValue();46.byte[] bf = new byte[3];47.bf[0] = b0;48.fullByte[i*3] = bf[0];49.bf[1] = b1;50.fullByte[i*3+1] = bf[1];51.bf[2] = b2;52.fullByte[i*3+2] = bf[2];53.54.}55.return fullByte;56.}57.}UTF-8的编码原理和特性:U+0000~U+007E 1 _ _ _ _ _ _ _ (7bits)U+0080~U+07FF 1 1 0_ _ _ _ _ 1 0_ _ _ _ _ _ (11bits)U+0800~U+FFFF 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ (16bits)。

Shell脚本把文件从GBK转为UTF-8编码

Shell脚本把文件从GBK转为UTF-8编码
读取文件是我们在日常工作中经常遇到的一个需求下面这篇文章主要给大家介绍了关于利用shell脚本循环读取文件中每一行的方法文中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值需要的朋友们下面随着小编来一起学习学习下吧
Shelቤተ መጻሕፍቲ ባይዱ脚本把文件从 GBK转为 UTF-8编码
shell 脚本:
if [ -f "$path" ] ; then echo "Converting $path (gbk --> utf-8) ... " if file "$path"|grep -q UTF-8 >/dev/null ; then echo "Already converted" else iconv -f gbk $opt -t utf-8 "$path" > /tmp/$$.tmp if [ $? -eq 0 ] ; then
#!/bin/sh
## ## convert file from GB2312 to UTF-8 ##
path="$1" unset opt if [ "$2" = "force" ]; then opt="-c -s" fi
if [ -z "$path" ]; then echo "nUsage: $0 <file or dir>n" elif [ ! -e "$path" ] ; then echo "nERROR: destination: $path does not exist.n" fi

Python字符编码转码之GBK,UTF8互转

Python字符编码转码之GBK,UTF8互转

Python字符编码转码之GBK,UTF8互转⼀、Python字符编码介绍1、须知:在python 2中默认编码是 ASCII,⽽在python 3中默认编码是 unicodeunicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常⽤的unicode版本,但是在⽂件⾥存的还是utf-8,因为utf8省空间在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型在unicode编码中 1个中⽂字符=2个字节,1个英⽂字符 = 1个字节,切记:ASCII是不能存中⽂字符的utf-8是可变长字符编码,它是unicode的优化,所有的英⽂字符依然按ASCII形式存储,所有的中⽂字符统⼀是3个字节unicode包含了所有国家的字符编码,不同字符编码之间的转换都需要经过unicode的过程python本⾝的默认编码是utf-82、py2中的编码和转码的过程,如图:注:因为unicode是中间编码,任何字符编码之前的转换都必须解码成unicode,在编码成需要转的字符编码⼆、字符编码的转换1、py2字符编码的转换,代码如下:#! /usr/bin/env python# -*- coding:utf-8 -*-# __auther__ == luoahongs = "我是学员"#utf-8解码成unicode编码s_to_unicode = s.decode("utf-8")print("--------s_to_unicode-----")print(s_to_unicode)#然后unicode再编码成gbks_to_gbk = s_to_unicode.encode("gbk")print("-----s_to_gbk------")print(s_to_gbk)#gbk解码成unicode再编码成utf-8gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")print("------gbk_to_utf8-----")print(gbk_to_utf8)#输出--------s_to_unicode-----我是学员-----s_to_gbk------�����˧------gbk_to_utf8-----我是学员注:以上这种情况适合字符是⾮unicode编码请款下,但是如果字符编码已经是Unicode的了咋办呢?⼴告回来,更加精彩。

PHP如何实现Unicode和Utf-8编码相互转换

PHP如何实现Unicode和Utf-8编码相互转换

PHP如何实现Unicode和Utf-8编码相互转换PHP如何实现Unicode和Utf-8编码相互转换通过PHP实现一个函数可以对字符串进行Unicode的编码和解码,需要的朋友可以参考下。

最近恰好要用到unicode编码的转换,就去查了一下php的库函数,居然没找到一个函数可以对字符串进行Unicode的编码和解码!也罢,找不到的话就自己实现一下了。

Unicode和Utf-8编码的区别Unicode是一个字符集,而UTF-8是Unicode的其中一种,Unicode是定长的都为双字节,而UTF-8是可变的,对于汉字来说Unicode占有的字节比UTF-8占用的字节少1个字节。

Unicode为双字节,而UTF-8中汉字占三个字节。

UTF-8编码字符理论上可以最多到6个字节长,然而16位BMP (Basic Multilingual Plane)字符最多只用到3字节长。

下面看一下UTF-8编码表:U-00000000 - U-0000007F: 0xxxxxxxU-00000080 - U-000007FF: 110xxxxx 10xxxxxxU-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxxU-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxxU-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxxU-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxxxxx 的位置由字符编码数的二进制表示的位填入,越靠右的x 具有越少的特殊意义,只用最短的那个足够表达一个字符编码数的多字节串。

注意在多字节串中, 第一个字节的开头"1"的数目就是整个串中字节的数目。

Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?

Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?
这篇文章主要介绍了oracle数据库scott用户创建view视图权限的操作方法本文给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值需要的朋友可以参考下
Oracle将字符编码从 GBK转到 UTF8,如何操作比较稳 妥?
有个学校oracle数据库的编码是GBK,而且库里边已经有很多生产数据了,现在想改成UTF8的,如果执行了这步操作,会出 现哪些问题?
因为utf8的库中文占3个byte,gbk占2个byte,所以会出现客户端乱码。 比较稳妥的方案是,再搭建一个oracle环境,设置成utf8编码,把旧的oracle数据迁移到新的utf8编码的oracle图的办法是错的,从不这样用,也不了解会有啥问题。

网页编码转换软件UTF-8转GBK或者GBK转UTF-8

网页编码转换软件UTF-8转GBK或者GBK转UTF-8

⽹页编码转换软件UTF-8转GBK或者GBK转UTF-8⽹页编码转换软件 UTF-8转GBK或者GBK转UTF-8
制作英⽂模板最简单的办法就是找个喜欢的中⽂模板,翻译为英⽂,然后转换为utf-8编码即
可。

⽐较笨的⽅法是⽤Dreamweaver转换,要是⼀个两个还好,⼀两百个⽂件就完了。

所以最好的
⽅法是直接使⽤编码转换软件,我⽤的软件是convertz,貌似这个软件N年前开发出来后就没有
更新了,但是蛮好⽤的。

这款软件是免安装的,双击ConvertZ.exe,程序启动后会⾃动隐藏到桌⾯的的顶端,打开您所
需要的⽂件即可,如下图
来源⽂件⾥⾯选定你要转换模板所在的⽂件夹,⽂件夹⾥⾯以.htm,.html,.txt结尾的⽂件都会
出现在视图中,同时不要忘记在⽬的地选项⾥⾯设置你转换后的⽂档要存放的⽬录。

这时候看
进阶选项那⾥可能没有你需要的转换模式,例如我要转换utf-8为GBK,点击进阶选项按钮,会
有如下选项:
选择你要输⼊的格式和输出的格式即可。

然后隐藏进阶选项按钮,把你需要转换的⽂件加⼊到
档案清单⾥⾯
OK,点击开始转换,很快就转换好了。

注意,GBK的模板转换为utf-8的时候,⼀些标点是⽆法转换的,⽽这些GBK编码的标点在⽼外
的电脑上是⽆法显⽰的。

所以有些⽂件⾥⾯需要批量替换⼀些不能转换的东西。

同样,中⽂⽹
站使⽤的uft-8模板不是纯utf-8,想翻译成英⽂模板使⽤的不要忘记哪些标点和符号需要修改的。

理解并解决GBK转UTF-8奇数中文乱码

理解并解决GBK转UTF-8奇数中文乱码

理解并解决GBK转UTF-8奇数中⽂乱码最近在做⼀个反馈功能,把数据反馈到对⽅公司⽹站,我公司是GBK编码,对⽅公司是UTF-8编码。

因此,我需要将GBK编码数据转换成UTF-8编码数据,这样对⽅⽹站才不会乱码。

最简单的⽅法是将HttpClient的ContentCharset设置为utf-8;如果ContentCharset是gbk 并且⼜不想设置为utf-8,那么就需要将数据转换成UTF-8编码再发到对⽅⽹站。

问题出现:GBK转UTF-8时,奇数个中⽂会乱码,偶数个中⽂不会乱码。

三个中⽂public static void encodeError() throws UnsupportedEncodingException {String gbk = "我来了";String utf8 = new String(gbk.getBytes("UTF-8"));//模拟UTF-8编码的⽹站显⽰System.out.println(new String(utf8.getBytes(),"UTF-8"));}/*我来??*/前⾯三个中⽂,后⾯⼀个中⽂,都是奇数public static void encodeError2() throws UnsupportedEncodingException {String gbk = "今年是2011年";String utf8 = new String(gbk.getBytes("UTF-8"));//模拟UTF-8编码的⽹站显⽰System.out.println(new String(utf8.getBytes(),"UTF-8"));}/*今年??011??*/原因:为什么只有奇数个中⽂才乱码,偶数个却不乱码?下⾯来分析原因public static void analyze() throws UnsupportedEncodingException {String gbk = "我来了";String utf8 = new String(gbk.getBytes("UTF-8"));for (byte b : gbk.getBytes("UTF-8")) {System.out.print(b + " ");}System.out.println();for (byte b : utf8.getBytes()) {System.out.print(b + " ");}}/*-26 -120 -111 -26 -99 -91 -28 -70 -122-26 -120 -111 -26 -99 -91 -28 -70 63*/注意最后⼀个字节不同,上⾯⼀⾏才是正确的UTF-8编码。

Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换1、函数介绍在Java中,字符串用统一的Unicode编码,每个字符占用两个字节,与编码有关的两个主要函数为:1)将字符串用指定的编码集合解析成字节数组,完成Unicode-〉charsetName转换public byte[] getBytes(String charsetName) throwsUnsupportedEncodingException2)将字节数组以指定的编码集合构造成字符串,完成charsetName-〉Unicode转换public String(byte[] bytes, String charsetName) throwsUnsupportedEncodingException2、Unicode与各编码之间的直接转换下面以对中文字符串"a中文"的编码转换为例,来了解各种编码之间的转换1)Unicode和GBK测试结果如下,每个汉字转换为两个字节,且是可逆的,即通过字节可以转换回字符串String-GBK〉ByteArray:\u0061\u4E2D\u6587(a中文)-〉0x61 0xD6 0xD00xCE 0xC4ByteArray-GBK〉String:0x610xD60xD00xCE0xC4-〉\u0061\u4E2D\u6587(a中文)2)Unicode和UTF-8测试结果如下,每个汉字转换为三个字节,且是可逆的,即通过字节可以转换回字符串String-UTF-8〉ByteArray:\u0061\u4E2D\u6587(a中文)-〉0x610xE40xB80xAD 0xE6%0x96 0x87ByteArray-UTF-8〉String:0x61 0xE4 0xB8 0xAD 0xE6%0x96 0x87-〉\u0061\u4E2D\u6587(a中文)3)Unicode和ISO-8859-1测试结果如下,当存在汉字时转换失败,非可逆,即通过字节不能再转换回字符串String-ISO-8859-1〉ByteArray:\u0061\u4E2D\u6587(a中文)-〉0x610x3FByteArray-ISO-8859-1〉String:0x610x3F-〉\u0061\u003F\u003F(a??)3、Unicode与各编码之间的交叉转换在上面直接转换中,由字符串(Unicode)生成的字节数组,在构造回字符串时,使用的是正确的编码集合,如果使用的不是正确的编码集合会怎样呢?会正确构造吗?如果不能正确构造能有办法恢复吗?会信息丢失吗?下面我们就来看看这种情况,这部分可以说明在某些情况下虽然我们最终正确显示了结果,但其间仍然进行了不正确的转换。

如何将织梦程序由GBK编码转为UTF-8字符集

如何将织梦程序由GBK编码转为UTF-8字符集

如何将织梦程序由GBK编码转为UTF-8字符集
在使用织梦的时候,由于需要出现,像韩语、日语等的非中文字符,但是原先使用的是织梦gbk版本的,所以面对非中文字符,我们就需要使用UTF-8字符集了,所以我们需要将现有的gbk版本转化问UTF-8 的,我们需要怎幺做呢?下面我们给大家介绍一下织梦程序由GBK编码转为UTF-8字符集的方法吧!
 转换的方法比较多,这里主要讲一种方法,其他的方法也跟这个方法差不多
 使用到了两个工具phpmyadmin 和Dreamweaver(或UltraEdit或者editplus) ,其他的工具没有试验过,但是原理是一样的,如果你不会使用这两工具,可以用其他的试试!
 下面说明方法( 这里我假设是GBK转UTF8 )
 一、转换文件
 1、如果你没有对默认的文件做任何更改,就只要传个全新的UTF8程序上去,然后更改data目录下common.inc.php文件的数据库链接信息即可
 2、如果你改过文件,比如模板,你可以用Dreamweaver(或UltraEdit或者editplus)打开文件点击另存为选择你要保存的编码的方法,将改过的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Str,
-1,
NULL,
0);
if ( 0 == needSize ) return NULL;
Bufw = new wchar_tБайду номын сангаасneedSize];
if ( NULL == Bufw ) return NULL;
NULL,
NULL);
unsigned char *pWork = (unsigned char *)Bufc;
memset(RTV,0x0,sizeof(RTV));
if ( strlen(Bufc) > 5120 )
{ return NULL; }
while( *pWork != 0x0 )
{
delete [] Bufc;
Bufc = NULL;
}
return RTV;
}
int main(int argc, char* argv[])
{
printf("Hello World!\n");
printf("%s\n",encodeURI("哇哈哈 test kk"));
return 0;
}
// urlendecodetest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
}
else
{
sprintf(RTV+strlen(RTV),"%c",*pWork);
}
pWork++;
}
if ( NULL != Bufw )
{
delete [] Bufw;
Bufw = NULL;
}
if ( NULL != Bufc )
{
if ( *pWork != '!' && *pWork != '@' && *pWork != '#' &&
*pWork != '$' && *pWork != '&' && *pWork != '*' &&
*pWork != '(' && *pWork != ')' && *pWork != '=' &&
*pWork != ':' && *pWork != '/' && *pWork != ';' &&
*pWork != '?' && *pWork != '+' && *pWork != '\'' &&
*pWork != '.' )
{
sprintf(RTV+strlen(RTV),"%%%2X",*pWork);
memset(Bufw,0x0,needSize*2);
MultiByteToWideChar(CP_ACP,
NULL,
Str,
-1,
Bufw,
needSize);
needSize = WideCharToMultiByte(CP_UTF8,
const char *encodeURI(const char *Str)
{
wchar_t *Bufw = NULL;
char *Bufc = NULL;
char RTV[5120];
long needSize = MultiByteToWideChar(CP_ACP,
NULL,
NULL,
Bufw,
-1,
NULL,
0,
NULL,
NULL);
if ( 0 == needSize ) return NULL;
Bufc = new char[needSize];
if ( NULL == Bufc ) return NULL;
memset(Bufc,0x0,needSize);
WideCharToMultiByte(CP_UTF8,
NULL,
Bufw,
-1,
Bufc,
needSize,
相关文档
最新文档