java开发中乱码问题

Java开发中,常常会遇到乱码的问题,一旦遇到这种问题,常常就很扯蛋,每个人都不愿意承认是自己的代码有问题。其实编码问题并没有那么神秘,那么不可捉摸,搞清Java的编码本质过程就真相大白了。
02    
03其实,编码问题存在两个方面:JVM之内和JVM之外。
04    
05    
06 1、Java文件编译后形成class
07 这里Java文件的编码可能有多种多样,但Java编译器会自动将这些编码按照Java文件的编码格式正确读取后产生class文件,这里的class文件编码是Unicode编码(具体说是UTF-16编码)。
08    
09因此,在Java代码中定义一个字符串:
10 String s="汉字";
11 不管在编译前java文件使用何种编码,在编译后成class后,他们都是一样的----Unicode编码表示。
12    
13 2、JVM中的编码
14 JVM加载class文件读取时候使用Unicode编码方式正确读取class文件,那么原来定义的String s="汉字";在内存中的表现形式是Unicode编码。
15    
16当调用String.getBytes()的时候,其实已经为乱码买下了祸根。因为此方法使用平台默认的字符集来获取字符串对应的字节数组。在WindowsXP中文版中,使用的默认编码是GBK,不信运行下:
17 public class Test { 
18         public static void main(String[] args) { 
19                 System.out.println("当前JRE:" + System.getProperty("java.version")); 
20                 System.out.println("当前JVM的默认字符集:" + Charset.defaultCharset()); 
21         } 
22} 
23 当前JRE:1.6.0_16 
24当前JVM的默认字符集:GBK 
25 当不同的系统、数据库经过多次编码后,如果对其中的原理不理解,就容易导致乱码。因此,在一个系统中,有必要对字符串的编码做一个统一,这个统一模糊点说,就是对外统一。比如方法字符串参数,IO流,在中文系统中,可以统一使用GBK、GB13080、UTF-8、UTF-16等等都可以,只是要选择有些更大字符集,以保证任何可能用到的字符都可以正常显示,避免乱码的问题。(假设对所有的文件都用ASCII码)那么就无法实现双向转换了。
26    
27 要特别注意的是,UTF-8并非能容纳了所有的中文字符集编码,因此,在特殊情况下,UTF-8转GB18030可能会出现乱码,然而一群傻B常常在做中文系统喜欢用UTF-8编码而不说不出个所以然出来!最傻B的是,一个系统多个人做,源代码文件有的人用GBK编码,有人用UTF-8,还有人用GB18030。FK,都是中国人,也不是外包项目,用什么UTF-8啊,神经!源代码统统都用GBK18030就OK了,免得ANT脚本编译时候提示不可认的字符编码。
28    
29因此,对于中文系统来说,最好选择GBK或GB18030编码(其实GBK是GB18030的子集),以便最大限度的避免乱码现象。
30    
31 3、内存中字符串的编码
32 内存中的字符串不仅仅局限于从class代码中直接加载而来的字符串,还有一些字符串是从文本文件中读取的,还有的是通过数据库读取的,还有可能是从字节数组构建的,然而他们基本上都不是Unicode编码的,原因很简单,存储优化。
33    
34因此就需要处理各种各样的编码问题,在处理之前,必须明确“源”的编码,然后用指定的编码方式正确读取到内存中。如果是一个方法的参数,实际上必须明确该字符串参数的编码,因为这个参数可能是另外一个日文系统传递过来的。当明确了字符串编码时候,就可以按照要求正确处理字符串,以避免乱码。
35在对字符串进行解码编码的时候,应该调用下面的方法:
36getBytes(String charsetName)    
37 String(byte[] bytes, String charsetName)  
38而不要使用那些不带字符集名称的方法签名,通过上面两个方法,可以对内存中的字符进行重新编码。
基于simulink的自动紧急制动系统(AEB)的功能验证 本文手把手指导使用Simulink构建自动紧急制动系统(AEB)模型,通过五个关键步骤完成功能验证:1)搭建车辆动力学模型;2)设计雷达传感器模型;3)开发基于碰撞时间(TTC)的决策逻辑;4)设计标准化测试场景;5)进行仿真分析。重点讲解了AEB的多级触发机制(预警、辅助制动、自动制动)和核心指标验证方法,包括制动时机判断、减速度性能等。通过典型场景仿真,展示了AEB如何在2.5秒TTC触发预警,1.2秒TTC启动自动制动,有效避免碰撞。文章还展望了行人AEB、传感器融合等进阶研究方向,为自动驾驶安全系统 阅读详情

相关推荐

LatentSync:开源数字人唇形同步技术的实战部署与优化指南

本文详细介绍了开源数字人唇形同步工具LatentSync的实战部署与优化全流程。从核心原理(潜在扩散模型与TREPA技术)解析,到手把手完成环境搭建、模型获取及首次推理。文章深入探讨了自定义素材处理、关键参数调优(如guidance_scale),并提供了显存不足、人脸检测失败等常见问题的解决方案与性能优化技巧,旨在帮助用户高效部署并提升生成效果。

9o8p7i6u5y的博客 1008

web开发中文乱码问题及解决方案

在web应用开发过程中,经常会碰到中文乱码的问题,下面是常见的导致中文乱码的问题以及解决方案(tomcat) 1.JSP页面中包含中文不能保存,eclipse中提示需保存为UTF-8 解决的办法是在jsp页面中增加page指令,如下: 或者   2. JSP页面上是中文,但是页面上看到的是乱码: 解决的办法就是在JSP页面中添加page指令,如下: "%> 这里说下page

sunmun的专栏 4515

四阶龙格库塔法求解一次常微分方程组(python实现)

之前在博客发布了关于使用四阶龙格库塔方法求解一次常微分方程组的文章,由于代码缺少具体的验证,部分朋友可能存在疑问,因此这里打算再重新写一篇博客来验证一下程序的正确性,另外,这里是使用python语言来实现的。

HelloWorldTM的博客 8543

开发中的乱码处理

开发环境中的编码要统一:页面、数据库、servlet、js都为统一的编码jsp页面乱码1、修改单个jsp文件编码:右键点击要修改的jsp文件--> properties --> resource --> Text file encoding --> other2、修改jsp文件的默认编码:菜单window --> properties --> myeclipse...

241

深入解析LCD DRM驱动框架中的KMS与GEM机制

本文深入解析了Linux内核中DRM(Direct Rendering Manager)驱动框架的核心机制,重点剖析了KMS(内核模式设置)与GEM(图形执行管理器)的工作原理。KMS作为显示系统的总指挥,负责原子化地控制CRTC、Encoder、Plane等硬件资源,确保画面同步更新,避免撕裂;GEM则作为显存大管家,通过DUMB和PRIME机制高效管理图形缓冲区的分配、共享与同步。文章结合RK3568平台实战,阐述了如何利用这些机制优化显示性能,并提供了调试技巧与常见问题解决方案。

weixin_29188997的博客 387

一文介绍Linux EAS

EAS只在系统负载不重时,即系统中每个CPU的利用率都低于其算力的80%时才被启用,而且选出的最节能CPU只有比线程当前运行的CPU节约能量大于6%时,线程才会迁移到该CPU运行。因此EAS为线程选择最节约能量的CPU来运行的前提条件是很苛刻的,针对重载场景(比如游戏),EAS的功能应该很少被使用起来,针对重载场景的功耗优化,这里可能是一个值得尝试的点。算力(capacity)是CPU调度中的一个基础概念,它反映的是一个CPU的计算能力,是个规格化的值,可以通过读取Android手机的文件节点。

youzhangjing_的博客 1235

开发中常见的中文乱码原因

在开发中,我们常常遇到中文乱码的问题,比如: &浏览器中看到的Jsp/Servlet页面中的汉字成了 ’?’  &浏览器中看到的Servlet页面中的汉字都成了乱码   &Jsp/Servlet页面无法显示GBK汉字。 &Jsp/Servlet不能接收form提交的汉字。 &JSP...

weixin_34368949的博客 328

手把手教你用YOLOv5和OpenCV实现DNF全自动刷图(含自动拾取与Boss战逻辑)

本文详细介绍了如何使用YOLOv5和OpenCV构建DNF全自动刷图系统,包括环境配置、游戏画面采集、目标检测、场景导航及操作控制等核心模块。通过实战案例,帮助开发者掌握游戏自动化技术,实现自动拾取与Boss战逻辑,提升游戏效率。

weixin_42628941的博客 450

Java开发乱码问题

乱码问题 后端接受参数不乱码,往数据库存乱码解决 spring.datasource.url=jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF8 前端传入参数,后端接受??乱码 配置tomcat/conf/server.xml 前端传入乱码配置浏览器编码为UTF-8 ...

csdn_667的博客 193

计算文本相似度的常用算法

NLP、数据挖掘领域中,文本分析是一个很重要的领域,这有助于我们去让计算机理解语言的作用和使用。文本分析是数据挖掘的重要手段,利用文本分析,我们将很快的读取到一本书、一篇文章、一段话中的关键词和核心思想,而文本相似度就是我们用来剔除无用信息或者重复信息的重要手段,让计算机去找文本中的不同。 在生活中,信息检索、数据挖掘、机器翻译、文档复制检测等领域都应用到“文本相似度”。文本不仅仅是文字,文本相似度的应用更广,除了文字的匹配,还可以是图片、音频等,因为它们的实质都是在计算机中都是以二进制的方式存在的。相.

氧小氢的博客 2万+

数据分析实战:如何用皮尔逊相关系数避免伪相关陷阱(附Python代码)

本文通过实战案例与Python代码,深入解析了皮尔逊相关系数在数据分析中的应用与常见陷阱。文章重点揭示了如何识别与避免由混杂变量导致的伪相关,并介绍了通过可视化、敏感性分析、分层分析与偏相关分析等方法来检验相关性的可靠性,帮助分析师建立严谨的相关性思维。

weixin_29051245的博客 411

开发乱码

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34178244的博客 127

Kile5报错—> ARM-Compiler ‘Default Compiler Version 5‘ which is not available安装使用Compiler Version 5 的办法

Kile5报错—> ARM-Compiler ‘Default Compiler Version 5‘ which is not available安装使用Compiler Version 5 的办法

weixin_72050316的博客 1187

java中html中文乱码怎么解决,解决Java中Web开发的中文乱码问题

[之前总是碰到JSP页面乱码的问题,每次都是现在网上搜,然后胡乱改,改完也不明白原因。这次正好作下总结,中文乱码就是因为编码不符,可能出现乱码有四个地方:1 JSP编码对于大多数从事Java开发的程序员来说,Java中的中文乱码是个很头痛的问题。在Web开发中尤为凸显,明明在页面中输入的是中文,为什么在数据库中保存的却是不是中文,而是我们看不懂的文字。用程序中专业的术语来说,是乱码,不是我们所想要...

weixin_42510608的博客 6448

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java程序运行乱码_java 开发运行出现的乱码问题

许多文件的默认编码是ISO-8859-1,而中文操作系统的缺省编码是GB18030,在此工作空间中建立的工程编码是GB18030.我们常用的编码是UTF-8,能够使得插件有更好的国际支持。在编写JSP文件时如果没有更改默认编码,则中文无法正常输出,出现乱码。Eclipse工作空间的默认编码是操作系统缺省编码,和简体中文操作系统(windows xp,windows 2000)编码一致,为GB180...

weixin_28872283的博客 4419

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java开发中的乱码问题

Java开发中的乱码实在是一件让人头疼的事,想起大学那会,时常

所有的美好,源于我们不断的追求 615

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

解决Java中Web开发的中文乱码问题

<br />      对于大多数从事Java开发的程序员来说,Java中的中文乱码是个很头痛的问题。在Web开发中尤为凸显,明明在页面中输入的是中文,为什么在数据库中保存的却是不是中文,而是我们看不懂的文字。用程序中专业的术语来说,是乱码,不是我们所想要的结果。那么这个问题应该怎么来解决呢?<br />      在做HTML页面时,为了统一页面中不会出现中文乱码问题,我们就把在<head></head>标签中<meta http-equiv="Content-Type" content="text/ht

我的专栏 3395

java web乱码_java开发学习常见的乱码问题及解决方案

一、JSP页面乱码因为网页默认的编码格式为ISO-8859-1,该编码格式不支持汉字,所以在网页上显示为乱码?.解决方案在文件顶部添加header上添加<%@ page contentType="text/html;charset=UTF-8" language="java" %>二、ajax请求时 request.getParams乱码在你的tomcat server.xml中配置即...

weixin_39522312的博客 149

java开发文字乱码_Java编程中文乱码问题

Tomcat对于GET请求并不会考虑使用request.setCharacterEncoding方法设置的编码,而会永远使用iso-8859-1编码,而这位朋友使用的正好是GET请求,因此,tomcat将会使用iso-8859-1将提交的字节转换成字符串…java web开发过程中,中文乱码是一个老生常谈的话题了,那么该如何解决呢?大致思路就是重新编码为gbk或者gb2312,分两种情况a是get...

weixin_34652847的博客 804

VS code开发JAVA中文乱码问题

使用VS code开发JAVA 在编写代码中包含中文时出现乱码。 原因分析:文件编码、编译的编码、显示的编码不同。 网上的思路有以下几种: 1、统一为GBK编码 2、统一为UTF-8编码,Win10系统也使用beta 的UTF-8显示模式。 3、直接用IDEA等工具,工具默认绑定好了编码模式。 用VS code比较习惯和喜爱,同时UTF-8的编码模式更普遍和通用, 我这里采用的方式是: 1、文件编码为UTF-8。右下角显示编码的位置,然后选择“通过编码保存”。 2、javac编.

kinber的专栏 4107

java emoji显示乱码_java开发学习常见的乱码问题及解决方案

一、JSP页面乱码因为网页默认的编码格式为ISO-8859-1,该编码格式不支持汉字,所以在网页上显示为乱码?.解决方案在文件顶部添加header上添加二、ajax请求时 request.getParams乱码在你的tomcat server.xml中配置即添加URIEconding="UTF-8" useBodyEncodingForURI="true"三、ajax请求时 response出去为...

weixin_36047554的博客 487

关于Java web开发中的中文乱码问题

前段时间用Java web技术做了一个小小的微博系统,

雾满码生的专栏 556

java web 开发中中文乱码问题解决

在java web 开发中经常遇到中文乱码问题,下面我就来为大家将这些解决方法进行汇总: 1,在eclipse中,默认的JSP编码格式为ISO-8859-1,但是此格式不支持中文,一般我们编程使用UTF-8格式,更改eclipse的编码格式方式如下: window->preferences->General->Content Types->Text->JSP 2,当JSP

insulator2008的专栏 1351

Java web开发中的中文乱码问题解决之道 - 概要篇

本文转载地址http://www.lifevv.com/java/doc/20080229211915719.html仅供收藏  每一个JAVA WEB开发者都会碰到乱码问题。本文阐述了JAVA WEB开发中乱码的完全解决方法。  JAVA中,一个WEB应用从构成部分来看无非分3部分:  JSPJAVA程序(业务逻辑)数据库 要解决乱码问题,也从这3部分入手。  其实,我

走在java的路途上 630

java emoji显示乱码_「软帝学院」:Java编程开发学习常见的乱码问题及解决方案...

本文将介绍一种Java Web/Api 开发常见的乱码问题。前提摘要:在学习Java Web的过程中,乱码问题是经常遇到的,无论是页面乱码还是数据库乱码。本文将罗列笔者在开发过程中常常遇到几种乱码场景。一、JSP页面乱码因为网页默认的编码格式为ISO-8859-1,该编码格式不支持汉字,所以在网页上显示为乱码???.解决方案在文件顶部添加header上添加二、ajax请求时 request.get...

weixin_31363715的博客 174

Java 开发 MCP服务端乱码问题

鏈枃灏嗘帰璁ㄥ湪Spring AI妗嗘灦涓浣曞皢鏂囦欢杞崲鎴愬悜閲忓瓨鍌紝骞惰鏄庡叾涓嶳AG锛圧etrieval-Augmented Generation锛夌殑鍏崇郴銆傝杩囩▼瀵逛簬浜掕仈缃戝ぇ鍘侸ava姹傝亴鑰呭湪闈㈣瘯涓睍绀哄叾瀵圭幇浠f妧鏈殑鐞嗚В闈炲父閲嶈銆�

m0_57486914的博客 125
上一篇: 人民币离岸业务
下一篇: apache和tomcat的区别-转载
forgood
博客等级 码龄20年 4粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值