明明两个字符串相同 为什么 equals返回false

Stringst=newString(request.getParameter("st").getBytes("ISO-8859-1"),"UTF-8");Strings... String st=new String(request.getParameter("st").getBytes("ISO-8859-1"),"UTF-8");
String stt="借阅";boolean bo=(st.equals(stt));
////////单独输出 st stt 都是 显示借阅 但是 输出 bo 总是 false
////我觉得应该是第一句的问题,可是我不这样做得到的值却是乱码,而且只有这个值是乱码...

大家帮帮忙啊,线上等...
展开
 我来答
yeafee
2011-03-09 · TA获得超过134个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:75.6万
展开全部
st 编码格式是"UTF-8".
而stt编码格式不是。
对stt做如下处理就可以了。
stt = new String("借阅".getBytes("ISO-8859-1"),"UTF-8");
如果程序文件默认编码格式是"GBK",就用GBK替换ISO-8859-1
总之要让两个变量完全一致,才能equals True

问题原因:应该是你的程序文件编码格式不是UTF-8。申明的变更也不是UTF-8。对其他字符转化成UTF-8,就出现同值不equals问题。
百度网友b6a19fb
推荐于2018-02-28 · 超过26用户采纳过TA的回答
知道答主
回答量:134
采纳率:0%
帮助的人:68.3万
展开全部
trim()下看看
String st=new String(request.getParameter("st").getBytes("ISO-8859-1"));
String stt="借阅";boolean bo=(st.equals(stt));

String st=new String(request.getParameter("st").getBytes("ISO-8859-1").trim());
String stt="借阅";boolean bo=(st.equals(stt));
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjn882288
2011-03-09 · 超过24用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:0
展开全部
与编码没关系..
你要确定你的这句:
String st=new String(request.getParameter("st").getBytes("ISO-8859-1"),"UTF-8");
得出来的值是"借阅",中间和旁边没有空格或者乱码.
建议你把值打印出来或者通过调试的方式观察其在内存中的情况.
追问
我在另一个页面打印出来也是  借阅
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lw1386589
2011-03-09
知道答主
回答量:3
采纳率:0%
帮助的人:4632
展开全部
String st=new String(request.getParameter("st").getBytes("UTF-8"),"UTF-8");
这个的字符集修改成一样就可以了。
不用客气!
追问
O(∩_∩)O哈!我真希望可以客气的跟你说声谢谢
遗憾呐
你的方法后 又变成跟直接request.getParameter("st").的效果一样 st乱码了 借阅
追答
你将编码都换成GBK试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-09
展开全部
.getBytes("ISO-8859-1"),"UTF-8" 删掉
更多追问追答
追问
那样的到的值是乱码( ⊙ o ⊙ )啊!
追答
第一句之后打印st是什么值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式