同一个String在使用不同的charset编码的时候equals仍然是返回true吗
1、对于ASCII字符,是的(只要该charset涵盖了ASCII编码),使用任何charset编码都不会影响equals的判断
2、对于非ASCII字符,不一定。例如同中文字符串"你好",在UTF-8编码下的String和GBK编码下的String两个equals可能返回false
参考这篇文章中的例子:http://www.cnblogs.com/qrlozte/p/3516702.html
下面给出代码验证:
public static String convertCharset(String arg, String charsetName) {
String result = null;
try {
result = new String(arg.getBytes(Charset.defaultCharset()), charsetName);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
System.out.println(Charset.defaultCharset());
String s1 = "ABCD"; // 尝试把s1换成中文字符
String s2 = convertCharset(s1, "UTF-8");
String s3 = convertCharset(s1, "GBK");
String s4 = convertCharset(s1, "GB2312");
System.out.println(
(s1.equals(s2)) + ", " +
(s1.equals(s3)) + ", " +
(s1.equals(s4)) + ", " +
(s2.equals(s3)) + ", " +
(s2.equals(s4)) + ", " +
(s3.equals(s4))
);
System.out.println(s1 + ", " + s2 + ", " + s3 + ", " + s4);
}
我的机器上的运行结果
当s1=="ABCD"时:
GBK
true, true, true, true, true, true
ABCD, ABCD, ABCD, ABCD
当s1=="你好"时:
GBK
false, true, true, false, false, true
你好, ???, 你好, 你好
同一个String在使用不同的charset编码的时候equals仍然是返回true吗的更多相关文章
- Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
在Java中,字符串可以直接赋值或者使用new来新建,直接赋值的话是编译阶段(.class文件)中就将该字符串值放到常量池中,以后如果有其他变量直接赋予同样的值的话就不再分配内存空间,而是直接给它个引 ...
- 在C#中通过使用Newtonsoft.Json库来解析百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据
百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据,如下所示: http://api.map.baidu.com/geocoding/v3/?address=**省**市**区**路 ...
- 对比两个String无规律包含连续4个相同字符返回true的方法
package com.qif.dsa.util; import java.util.ArrayList; import java.util.List; /** * @author * @Title: ...
- java String与Byte[]和String 与InputStream转换时注意编码问题。。。
前一段日子,我在做rsa加密和通过http get方式获取验证码图片通过BitmapFactory创建bitmap 出现了一系列的问题. 通过一系列的调试,发现有些问题原来是在进行String 与By ...
- asp.net query string 及 form data 遇到的编码问题
当遇到此问题时,脑海里闪过的第一个解决方案是设置 web.config 的编码.但一想,就某一个页面的需求而导致其他跟着妥协,不是好的解决方案.于是网上搜索答案,下面做个小分享,遗憾的是研究不够深入, ...
- [LeetCode] Encode String with Shortest Length 最短长度编码字符串
Given a non-empty string, encode the string such that its encoded length is the shortest. The encodi ...
- iOS开发-- TFHpple抓取GB-2312编码的html页面,页面返回编码错误
今天用TFHpple解析html,发现老报错encoding error : input conversion failed due to input error, bytes I/O error ...
- “equals”有值 与 “==”存在 “equals”只是比较值是否相同,值传递,==地址传递,null==a,避免引发空指针异常,STRING是一个对象==null,对象不存在,str.equals("")对象存在但是包含字符‘''
原文链接:http://www.cnblogs.com/lezhou2014/p/3955536.html "equals" 与 "==" "equa ...
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
随机推荐
- SRM 212 Div II Level One: YahtzeeScore
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=1692&rd=5858 比较简单. 代码如下: #inc ...
- Linux0.11内核剖析--内核代码(kernel)--sched.c
1.概述 linux/kernel/目录下共包括 10 个 C 语言文件和 2 个汇编语言文件以及一个 kernel 下编译文件的管理配置文件 Makefile.其中三个子目录中代码注释的将放在后面的 ...
- 【Python】Django auth 修改密码如何实现?
使用示例1.创建用户>>> from django.contrib.auth.models import User>>> user = User.objects.c ...
- Asp.net 在网页编写C#代码示例-- 一个简单的web MsSql 命令执行环境
在给一个客户做的系统上,因为要对数据库进行查看,但之前都是用TeamView来连接到客户的服务器进行数据库操作的 但最近客户那边的TeamView好像更改过密码导致我无法正常连接,而巧了客户的网官因为 ...
- RS特殊报表样式需求处理
收到一朋友求助:如下图的报表格式 思路如下 第一步:处理出基础数据是每个用户每个月属于每个区间的数据savemoney_bymonthmonth user save_qujian201412 a1 5 ...
- Android常用到的一些事件
1:查看是否有存储卡插入 String status=Environment.getExternalStorageState(); if(status.equals(Enviroment.MEDIA_ ...
- Grunt的配置及使用(压缩合并js/css)
Grunt的配置及使用(压缩合并js/css) 安装 前提是你已经安装了nodejs和npm. 你能够在 nodejs.org 下载安装包安装.也能够通过包管理器(比方在 Mac 上用 homebre ...
- leetCode 42.Trapping Rain Water(凹槽的雨水) 解题思路和方法
Trapping Rain Water Given n non-negative integers representing an elevation map where the width of e ...
- OSG 集群渲染 cluster render 支持 Cave 和 powerwall 模式
写了几天.用OSG,实现了集群渲染,感觉还不错,线性加速比还算能够.採用KDTree .八叉树管理场景.场景数据通过UDP和TCP. 不用复制文件,直接在线读取(主节点向渲染节点同步模型数据).效率基 ...
- Android API之onLayout, onMeasure
android.view.ViewGroup protected void onLayout(boolean changed, int l, int t, int r, int b) 执行layout ...