需求 在js中将中文用gb2312编码。如,“我”编码后应该是“%CE%D2”。
分析 大家知道,encodeURI和encodeURIComponent会用utf-8编码,如“我”编码后是“%E6%88%91”。据实验,似乎没有参数指定编码的地方。只有另寻他法。
大致分析有如下几种解决方案: 1. 用js创建一个隐藏的iframe并指定其为gb2312编码,将需要转换的文本放到iframe的form的一个input中,将form指定为get方式并提交,
然后获取其url并解析,应该可以得到其gb2312编码后的文本。
2. 用ajax传到服务器上编码,然后传回来。
3. 在js中创建一个gb2312编码表。
实现 第一种方案个人感觉太折腾,需要在多个不同的浏览器下测试。
第二种方案需要有服务器配合。
下面是第三种方案的实现:
最开始打算使用数组存储编码表,后来为了减小js文件大小,改用string来存储。
于是,js代码如下:
代码
复制代码 代码如下:
function encodeToGb2312(str){
var strOut="";
for(var i = 0; i < str.length; i++){
var c = str.charAt(i);
var code = str.charCodeAt(i);
if(c==" ") strOut +="+";
else if(code >= 19968 && code <= 40869){
index = code - 19968;
strOut += "%" + z.substr(index*4,2) + "%" + z.substr(index*4+2,2);
}
else{
strOut += "%" + str.charCodeAt(i).toString(16);
}
}
return strOut;
}
function decodeFromGb2312(str){
var strOut = '';
for (var i=0;i<str.length; i++){
var c = str.charAt(i);
// +是空格
if (c == '+'){
strOut += ' ';
}
// a,b,c,1,2等,非%开头的,直接返回本身
else if (c != '%'){
strOut += c;
}
// %开头
else{
i++;
var nextC = str.charAt(i);
// 数字,则不是汉字
if (!isNaN(parseInt(nextC))){
i++;
strOut += decodeURIComponent(c+nextC+str.charAt(i));
}
else{
var x = new String();
try
{
var code = str.substr(i,2)+str.substr(i+3,2);
i = i + 4;
var index = -1;
while ((index = z.indexOf(code,index+1)) != -1){
if (index%4 == 0){
strOut += String.fromCharCode(index/4+19968);
break;
}
}
}catch(e){}
}
}
}
return strOut;
}
var z='{0}';
(这里没考虑中文标点,主要是看unicode里中文标点和日韩的标点混在一起,分布在几个地方,就懒得弄了。谁弄了可以发我一份,谢了。)
最后用.NET生成z处的代码:
代码
复制代码 代码如下:
StringBuilder sb = new StringBuilder();
string strFormat = @"...z = '"; // 前面的js代码
const int MinHanzi = 19968;
const int MaxHanzi = 40869;
for (int i = MinHanzi; i < MaxHanzi + 1; i++)
{
byte[] bytes = Encoding.GetEncoding("gb2312").GetBytes(((char)i).ToString());
sb.AppendFormat("{0}{1}", Convert.ToString(bytes[0], 16).ToUpper(), Convert.ToString(bytes[1], 16).ToUpper());
}
string str = strFormat + sb.ToString(0, sb.Length - 1) + "';";
System.IO.File.WriteAllText(@"F:\encodeGb2312.js", str, Encoding.ASCII);
相关推荐:
SEO模块:提升网站排名,驾驭数字营销未来,营口网站建设制作平台
AI人物生成:重新定义虚拟形象创作的未来
ChatGPT免费版的限制:你需要了解的5大制约因素,Ai分解模型
seo用什么手法,seo方式 ,ai绘画飞翔
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
SEM做得好可以取代SEO吗?浅析两者的异同与未来趋势,王道ai
SEO赚钱:如何通过SEO技能在网络上实现财富自由,网站怎么建设推广平台
SEO获客的秘诀:如何通过搜索引擎优化提升客户获取能力,厦门seo搜索优化排名
SEO部:开启数字化营销新纪元的幕后英雄,株洲营销推广是什么公司
seo规范是什么意思,seo包括哪些内容 ,AI智能破解
SEO百度优化:让你的品牌在搜索引擎中脱颖而出,日照网站推广策划
GPT人工智能-让未来触手可及的智慧之光,ai头花写真
AI网页版智能问答,开启智慧沟通新时代,ai梦境档案用不了手柄
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
ChatGPT-深度学习与自然语言处理的革命性突破,金华ai视觉锁螺丝机
AI撰写率:让创作变得更高效,助力内容产业腾飞,人力ai
ChatGPT无服务:如何突破限制,未来人工智能的新可能,ai绘制装饰画
SEO教研:数字营销新趋势,提升网站流量与转化率的关键,齐鲁证券网站建设
SEO与网络推广机构:如何选择最适合你的数字营销合作伙伴,ai写作软件性价比高吗
ChatGPT崩了?用户称打开是一片空白,真相竟然如此!,zzz*明星AI换脸
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
ChatGPT美区要梯子吗?轻松畅享全球智能聊天体验,ai音位
360ai问答-智能时代的全能助手,未来的智慧生活,ai生成白底
今时CMS:引领数字化转型的智慧之选,河南seo优化网站联系方式
pbootcms自动翻译插件,让你的网站轻松实现多语言覆盖,ai 镀金
怎么用AI生成文章?全新写作方式的揭秘与应用指南
URL站长的崛起:打造高效网站运营的秘密武器,网站建设费用计算依据
AI人工智能文章生成器写作新纪元
文章AI排版,让创作更高效的秘密武器
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
用AI写一篇文章,如何提升你的写作效率与创意
AI公众号文章生成,轻松打造爆款内容
SEO才能:提升网站排名,突破网络营销的核心竞争力,南宁本地seo营销公司
seo需要会什么技术呢,seo需要会什么技术呢知乎 ,红色框ai
SEO架构:提升网站流量的核心策略,东营南江全平台营销推广
ChatGPT进不去怎么办?解决方案与技巧,轻松畅享智能对话,ai va
ChatGPT不能访问,我的学术水平直线下降,泰州大数据ai艾灸价格
AI通过算法和数据生成的作品:科技与艺术的跨越,带来无限创意可能,ai优化程序
打造内容创作新高度:文章扩写AI的革命性优势
重生成AI:突破科技前沿,开启智能未来
ChatGPT免费用户每天的使用限制:如何高效利用,突破困境!,花花制作ai
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
ChatGPT怎么打不开了?解决办法,轻松恢复畅通无阻!,ai订酒店ai对话
UCMS:引领智慧医疗新时代,打造数字化健康未来,推广工作谈营销
SEO中的别类词:提升排名,轻松超越竞争对手,ai插画生肖
SEO未来:如何在变革中抢占先机,迎接数字营销的新纪元,台州网站建设分析和总结
为什么要seo排名,为什么要做seo推广 ,AI写作开启创意新世界
AI网页生成:轻松构建智能网站,提升品牌竞争力,杭州专业ai智能教育
ChatGPT启动时遇到问题?快速解决方案让你畅享智能对话体验,ai如何保存logo
AI网页设计生成-智能化创造无限可能,ai机甲风背景音乐