恐怖的GPT4,轻松解决支付宝乱码问题!

最近有反馈说支付宝的理财页面出现了中文乱码,估计不少小伙伴和我一样,都惊呆了😮!阿里这种大厂还能出现这种低级错误?

 难道人力都投入到“通义千问”的突然发布上了?

那借这个机会,我就来和大家探讨一下,中文乱码是怎么出现的,以及如何快速解决乱码问题。

什么是中文乱码

Q:什么是中文乱码?

GPT4:中文乱码是指在计算机系统或软件中,由于字符编码不一致或处理不当,导致中文字符无法正常显示,出现乱码现象。这种现象通常表现为中文字符被替换成其他不相关的字符、符号或乱码。

比如说,历史上著名的“锟斤拷”同学,就是中文乱码的绝佳代言人。

什么是字符编码

Q:那什么是字符编码呢?

GPT4:字符编码(Character Encoding)是一种规则或约定,它将字符(如字母、数字、标点符号等)映射到计算机中的二进制数据。简单来说,字符编码就是将人类可读的字符转换为计算机可以处理的二进制数据的过程。

对于计算机来说,只认 0 和 1,所有的信息最终都是一个二进制数。一个二进制数要么是 0,要么是 1。8 个二进制数放在一起是一个字节,就会组合出 256 种状态,也就是 2 的 8 次方(2^8),从 00000000 到 11111111。

为了让计算机能够识别和处理各种字符,需要使用字符编码来对字符进行编码和解码。常见的字符编码包括 ASCII、UTF-8、UTF-16、GBK、GB2312 等。

1)ASCII

ASCII 码由电报码发展而来,第一版标准发布于 1963 年,最后一次更新则是在 1986 年,至今为止共定义了 128 个字符。其中 33 个字符无法显示在一般的设备上,需要用特殊的设备才能显示。

ASCII 码的局限在于只能显示 26 个基本拉丁字母、阿拉伯数字和英式标点符号,因此只能用于显示现代美国英语,对于其他一些语言则无能无力,比如在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。

PS:拉丁字母(也称为罗马字母)是多数欧洲语言采用的字母系统,是世界上最通行的字母文字系统,是罗马文明的成果之一。

虽然名称上叫作拉丁字母,但拉丁文中并没有用 J、U 和 W 这三个字母。

在我的印象中,可能说拉丁字母多少有些陌生,说英语字母可能就有直观的印象了。

阿拉伯数字,我们都很熟悉了。

但是,阿拉伯数字并非起源于阿拉伯,而是起源于古印度。学过历史的你应该有一些印象,阿拉伯分布于西亚和北非,以阿拉伯语为主要语言,以伊斯兰教为主要信仰。

处在这样的地理位置,做起东亚和欧洲的一些生意就很有优势,于是阿拉伯数字就由阿拉伯人传到了欧洲,因此得名。

英式标点符号,也叫英文标点符号,和中文标点符号很相近。标点符号是辅助文字记录语言的符号,是书面语的组成部分,用来表示停顿、加强语气等。

英文标点符号在 16 世纪时,分为朗诵学派和句法学派,主要由古典时期的希腊文和拉丁文演变而来,在 17 世纪后进入稳定阶段。俄文的标点符号依据希腊文而来,到了 18 世纪后也采用了英文标点符号。

在很多人的印象中,古文是没有标点符号的,但管锡华博士研究指出,中国早在先秦时代就有标点符号了,后来融合了一些英文标点符号后,逐渐形成了现在的中文标点符号。

2)Unicode

这个世界上,除了英语,还有法语、葡萄牙语、西班牙语、德语、俄语、阿拉伯语、韩语、日语等等等等。ASCII 码用来表示英语是绰绰有余的,但其他这些语言就没办法了。

像我的主人二哥的母语——中文,就博大精深,与其对应的汉字数量很多很多,东汉的《说文解字》收字 9353 个,清朝《康熙字典》收字 47035 个,当代的《汉语大字典》收字 60370 个。1994 年中华书局、中国友谊出版公司出版的《中华字海》收字 85568 个。

常用字大概 2500 个,次常用字 1000 个。

一个字节只能表示 256 种符号,所以如果拿 ASCII 码来表示汉字的话,是远远不够用的,那就必须要用更多的字节。简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,理论上最多可以表示 256 x 256 = 65536 个符号。

要知道,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。

  • 编码就是将原始数据(比如说文本、图像、视频、音频等)转换为二进制形式。

  • 解码就是将二进制数据转换为原始数据,是一个反向的过程。

如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会彻底消失。

这个艰巨的任务由谁来完成呢?Unicode,中文译作万国码、国际码、统一码、单一码,就像它的名字都表示的,这是一种所有符号的编码。

Unicode 至今仍在不断增修,每个新版本都会加入更多新的字符。目前最新的版本为 2020 年 3 月公布的 13.0,收录了 13 万个字符。

Unicode 是一个很大的集合,现在的规模可以容纳 100 多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母 AinU+0041 表示英语的大写字母 AU+4E25 表示汉字

具体的符号对应表,可以查询:

  • unicode.org:http://www.unicode.org

  • 汉字对应表:ttp://www.chi2ko.com/tool/CJK.htm

曾有人这样说:

Unicode 支持的字符上限是 65536 个,Unicode 字符必须占两个字节。

但这是一种误解,记住,Unicode 只是一个用来映射字符和数字的标准。它对支持字符的数量没有限制,也不要求字符必须占两个、三个或者其它任意数量的字节,所以它可以无穷大。

3)UTF-8

Unicode 虽然统一了全世界字符的编码,但没有规定如何存储。如果统一规定的话,每个符号就要用 3 个或 4 个字节表示,因为 2 个字节只能表示 65536 个,根本表示不全。

那怎么办呢?

UTF(Unicode Transformation Formats,Unicode 的编码方式)来了!最常见的就是 UTF-8 和 UTF-16。

在 UTF-8 中,0-127 号的字符用 1 个字节来表示,使用和 ASCII 相同的编码。只有 128 号及以上的字符才用 2 个、3 个或者 4 个字节来表示。

如果只有一个字节,那么最高的比特位为 0;如果有多个字节,那么第一个字节从最高位开始,连续有几个比特位的值为 1,就使用几个字节编码,剩下的字节均以 10 开头。

具体的表现形式为:

  • 0xxxxxxx:一个字节;

  • 110xxxxx 10xxxxxx:两个字节编码形式(开始两个 1);

  • 1110xxxx 10xxxxxx 10xxxxxx:三字节编码形式(开始三个 1);

  • 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx:四字节编码形式(开始四个 1)。

也就是说,UTF-8 是一种可变长度的编码方式——这是它的优势也是劣势。

怎么讲呢?优势就是它包罗万象,劣势就是浪费空间。举例来说吧,UTF-8 采用了 3 个字节(256*256*256=16777216)来编码常用的汉字,但常用的汉字没有这么多,这对于计算机来说,就是一种严重的资源浪费。

4)GB2312

基于这样的考虑,中国国家标准总局于 1980 年发布了 GB2312 编码,即中华人民共和国国家标准简体中文字符集。GB2312 标准共收录 6763 个汉字(2 个字节就够用了),其中一级汉字 3755 个,二级汉字 3008 个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的 682 个字符。

GB2312 的出现,基本满足了汉字的计算机处理需求。对于人名、古汉语等方面出现的罕用字和繁体字,GB2312 不能处理,就有了 GBK(K 为“扩展”的汉语拼音(kuòzhǎn)第一个声母)。

中文乱码是如何出现的?

Q:来一串出现中文乱码的 demo,中文为沉默王二

GPT4:下面是一个可能导致中文乱码的示例。首先使用 GBK 编码将中文字符串 "沉默王二" 转换为字节数组,然后使用 UTF-8 编码将字节数组转回字符串。这将导致字符串在解码时出现乱码。

public class EncodingDemo {public static void main(String[] args) {String originalStr = "沉默王二";String encodedStr = "";try {byte[] bytes = originalStr.getBytes("GBK");encodedStr = new String(bytes, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}System.out.println("转码前: " + originalStr);System.out.println("转码后: " + encodedStr);}
}

程序会输出什么呢?

转码前: 沉默王二
转码后: ��Ĭ����

嘿嘿,乱码来了!在 Unicode 中,� 是一个特殊的符号,它用来表示无法显示,它的十六进制是 0xEF 0xBF 0xBD。那么两个 �� 就是 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD,如果用 GBK 进行解码的话,就是大名鼎鼎的“锟斤拷”。

可以通过代码来验证一下:

// 输出 efbfbdefbfbd
char[] kuijinkao = HexUtil.encodeHex("��", StandardCharsets.UTF_8);
System.out.println(kuijinkao);
// 借助 hutool 转成二进制
byte[] testBytes = HexUtil.decodeHex(kuijinkao);
// 使用 GBK 解码
String testResult = new String(testBytes, Charset.forName("GBK"));
// 输出锟斤拷
System.out.println(testResult);

来看一下输出结果:

efbfbdefbfbd
锟斤拷

所以,以后再见到锟斤拷,第一时间想到 UTF-8 和 GBK 的转换问题准没错。

如何解决中文乱码呢?

Q:如何解决中文乱码呢?

GPT4:解决中文乱码问题需要确保在编码和解码过程中使用相同的字符编码。这是一个修改过的示例,展示了如何避免中文乱码问题:

String originalStr = "沉默王二";byte[] bytes = originalStr.getBytes(StandardCharsets.UTF_8);
String encodedStr = new String(bytes, StandardCharsets.UTF_8);System.out.println("正确转码前: " + originalStr);
System.out.println("正确转码后: " + encodedStr);

输出结果:

正确转码前: 沉默王二
正确转码后: 沉默王二

除此之外,以下是一些避免乱码的实践:

  • 使用统一的字符编码,如 UTF-8。它包含了所有 Unicode 字符,并且广泛支持。确保在所有平台和系统上使用相同的编码。

  • 在处理文本文件时,始终明确指定字符编码。例如,在 Java 中使用 InputStreamReader、OutputStreamWriter 时,指定编码参数。

  • 在 HTML、XML 等文档中,指定字符编码。例如,在 HTML 页面中添加 <meta charset="UTF-8">

  • 对于数据库,确保使用正确的字符集。在创建数据库和表时,明确指定字符集,如 utf8mb4。

当与第三方服务通信时,确保双方使用相同的字符编码。在处理 API 请求和响应时,检查字符编码是否匹配。

Q:针对支付宝这种生产环境事故,如何快速定位并解决问题呢?

GPT4:

1、收集信息:了解问题的具体表现,例如哪些页面或功能受到影响,问题的严重程度,以及用户反馈。这将有助于快速定位问题范围。

2、检查日志:查看服务器日志和应用程序日志,检查是否存在异常信息或错误。日志信息有助于识别问题发生的时间和具体原因。

3、复现问题:在测试环境中尝试复现问题,以便更深入地了解问题细节。如果无法复现问题,可能需要进一步收集生产环境的详细信息。

4、定位问题:根据收集到的信息,确定问题可能发生的代码或系统部分。检查相关代码,特别是涉及字符编码、数据传输、数据库操作的部分。

5、解决问题:修复问题代码,确保字符编码在整个系统中保持一致。进行单元测试和集成测试,验证问题是否已解决。

6、部署修复:将修复后的代码部署到生产环境。为了避免影响正常服务,可以考虑先在一个小规模的生产环境中进行验证,然后逐步扩大部署范围。

7、监控:在修复后持续关注系统运行状况,确保问题已得到解决。收集用户反馈,确认用户满意度。

8、总结经验:针对此次问题,总结经验教训,分析问题产生的根本原因,优化开发和测试流程,避免类似问题再次发生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15920.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个时代彻底结束了

你好&#xff0c;我是厂长。 之前有很多读者咨询我说&#xff1a;当下的互联网前景怎么样&#xff1f;还有必要转码吗&#xff1f; 不管是非科班的朋友&#xff0c;还是正在学习计算机专业的同学&#xff0c;相信大家都有这个疑惑&#xff0c;因为职业的选择&#xff0c;不仅关…

只知道ChatGPT?偷偷告诉你金融民工都在学的13个王炸金融AI工具,搞钱效率提升10倍!

要论金融民工的日常工作&#xff0c;读报告绝对排在第一位。 大量的财报、研报、背调资料、会议记录等等&#xff0c;动辄一份就几十页、上百页&#xff0c;导致很多朋友一看到报告就头疼。 下面这些AI工具&#xff0c;可以帮我们快速总结报告的主要内容&#xff0c;在短时间内…

开源赋能 普惠未来——回顾全球数字经济大会及开放原子全球开源峰会(Intel专题)

一、峰会背景 2023年6月11日至13日&#xff0c;中国北京迎来了一场全球数字经济大会和开放原子全球开源峰会的盛会。这次大会在北京北人亦创国际会展中心隆重举行&#xff0c;为来自世界各地的数字经济和开源社区的代表们提供了一个共同交流、合作的平台。 本次大会以"开…

AIGC来了,你的版权还安全吗?

引言 |人工智能生成内容&#xff08;AIGC&#xff09;是热度居高不下&#xff0c;据Gartner预计&#xff0c;到2025年&#xff0c;AIGC将占全球所有生成数据的10%&#xff0c;以ChatGPT、Stable Diffusion为代表的现象级应用受到强势追捧&#xff0c;AIGC毫无疑问是强有力的生产…

比ChatGPT更好用的Claude来了

比ChatGPT更好用的Claude来了&#xff0c;不需要魔法上网&#xff01;&#xff01;&#xff01; claude官网 点击 add to slack slack跟discord有点类似&#xff0c;先要去slack注册账号 登录之后就添加创建一个工作区 添加 不过现在已经停止添加了&#xff0c;会出现App u…

ChatGPT的竞争对手:Claude 简介

Introducing Claude 克劳德简介 After working for the past few months with key partners like Notion, Quora, and DuckDuckGo in a closed alpha, we’ve been able to carefully test out our systems in the wild, and are ready to offer Claude more broadly so it can…

ChatGPT被超越了?OpenAI核心成员出走,打造Claude模型

文&#xff5c;衡宇 萧箫 源&#xff5c;量子位 因不满老东家成为微软附庸&#xff0c;11名OpenAI前员工怒而出走。 如今带着“ChatGPT最强竞品”杀回战场&#xff0c;新公司估值50亿美元&#xff0c;一出手就获得3亿美元融资。 这家公司名叫Anthropic&#xff0c;新推出的聊天…

GPT前2代版本简介

承接上文ChatGPT进化的过程简介 2018年&#xff0c;Google的Bert和OpenAI的GPT绝代双骄&#xff0c;两者非常像&#xff0c;都是语言模型&#xff0c;都基本上是无监督的方式去训练的&#xff0c;你给我一个文本&#xff0c;我给你一个语言模型出来。 GPT前两代没有什么特别的…

强人工智能时代,区块链还有戏吗?

最近很多人都在问我&#xff0c;ChatGPT 把 AI 又带火了&#xff0c;区块链和 Web3 被抢了风头&#xff0c;以后还有戏吗&#xff1f;还有比较了解我的朋友问&#xff0c;当年你放弃 AI 而选择区块链&#xff0c;有没有后悔&#xff1f; 这里有一个小背景。2017 年初我离开 IBM…

chatgpt赋能python:Python抽奖程序:让彩票游戏更加有趣

Python抽奖程序&#xff1a;让彩票游戏更加有趣 随着科技的进步&#xff0c;彩票抽奖游戏已经成为许多人喜爱的活动之一。为了增加游戏的趣味性和公正性&#xff0c;许多抽奖游戏采用了Python编程语言来实现程序。本文将介绍Python抽奖程序的基本原理和使用方法&#xff0c;让…

独立开发者案例:每周4h月入数万刀;国家数据局与时代红利;创业前先买个域名;工程师成长最重要的是什么 | ShowMeAI周刊

这是ShowMeAI周刊的第6期。聚焦AI领域本周热点&#xff0c;及其在各圈层泛起的涟漪&#xff1b;关注AI技术进步&#xff0c;并提供我们的商业洞察。欢迎关注与订阅&#xff01;&#x1f440;日报合辑 ⌛ 独立开发者案例&#xff1a;每周只工作4小时&#xff0c;独立开发者打造月…

王炸-GPT4.0的新能力与商业价值

转自微信公众号&#xff1a;嵌入式单片机之家 有多王炸 &#xff1f; GPT-4 可以接受文本和图像输入&#xff0c;允许用户指定任何视觉或语言任务。具体来说&#xff0c;它在给定文本和图像输入的情况下能够生成文本输出&#xff08;自然语言、代码等&#xff09;。在一系列其它…

OpenAI宣布漏洞赏金计划,最高奖金2万美元

安全问题&#xff0c;已经成为 ChatGPT 和 GPT-4 等 AI 大模型是否能够大规模应用在各行各业的重要问题之一。OpenAI 也因为这一问题受到了业内人士、监管部门的诸多批评。 今天&#xff0c;OpenAI 官方发布了一篇名为 “Announcing OpenAI’s Bug Bounty Program” 的博客文章…

王慧文因健康问题辞任美团董事;数百万GitHub项目易受依赖库劫持攻击;特斯拉首台超级计算机或在七月投产|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

一篇就够:uniapp-Mqtt系列问题详细攻略(解决掉线、真机调试错误等问题)

&#x1f639;背景 昨天搞了一天&#xff0c;我觉得新手可以参考我这篇文章思路&#xff0c;避免你和我一样踩坑&#xff0c;刚好去年的这几天也在搞mqtt&#xff0c;不过当时弄的是微信小程序&#xff0c;这次项目是uniapp&#xff0c;我想实现uniapp中的h5能够使用mqtt&…

英语配音软件哪个好?

在英语的学习上最难的就是口语了&#xff0c;想要让发音变得更加标准&#xff0c;那么一定要体验几款英语配音的软件&#xff0c;最近就有一些小伙伴问到了英语配音app推荐免费的有哪些&#xff1f;好的英语配音软件可以让我们更好地完成英语的配音体验&#xff0c;还能体验多种…

股票大数据分析软件V2.7

分享一个在淘宝买的《股票大数据分析软件》给大家使用&#xff0c;售价是168元的软件&#xff01; 由于有业务要出国&#xff0c;短期不会回国&#xff0c;所以分享给广大股友使用&#xff01; 软件的主要作用是进行个股数据面的分析和选股的作用&#xff0c;软件的功能有龙虎榜…

运行通达信行情接口软件的电脑需要什么配置?

运行通达信行情接口软件电脑需要什么配置&#xff1f;目前除了机构之外&#xff0c;大部分的散户用的都是一些比较有名的电脑版股票软件&#xff0c;比如&#xff1a;通达信、同花顺、大智慧、东方财富等。通达信行情接口软件因为使用C语言编写&#xff0c;执行效率高&#xff…

chatgpt赋能python:用Python开发炒股软件:为什么Python是一个好的选择?

用Python开发炒股软件&#xff1a;为什么Python是一个好的选择&#xff1f; 如果你是一个股票交易员或投机者&#xff0c;你可能会花费大量时间在寻找市场动态、维护买卖记录以及获得对股票数据的准确分析。 在这个时代&#xff0c;开发一个炒股软件可能是最好的解决方案。 P…

证券接口通达信软件PC版有多少种形态?

有很多投资者对于证券接口通达信软件PC版的形态还是太了解的&#xff0c;通达信软件PC版&#xff0c;有以下两种形态&#xff1a; 第一种形态是官方版&#xff0c;第二种形态是券商定制版&#xff0c;那么券商为了嵌入自己的经纪、资管、咨询等业务&#xff0c;一般都有通达信…