编码问题

hubert_bubert 2009-11-30 03:39:39
从前台获得这样一个字符串 Aty_cnp_%u5904%u7406%u4E2D 我进行如下处理想把它转为中文
String temp = "Aty_cnp_%u5904%u7406%u4E2D";
String s = temp.substring(temp.indexOf("%")).replace("%", "\\");
System.out.println(s);
System.out.println("\u5904\u7406\u4E2D");
运行结果:
\u5904\u7406\u4E2D
处理中
为什么这一条打印语句不输出中文?
...全文
158 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hubert_bubert 2009-11-30
  • 打赏
  • 举报
回复
问题已解决,非常感谢!
justinavril 2009-11-30
  • 打赏
  • 举报
回复
先弄成字符再说吧!
String temp = "%u5904%u7406%u4E2D";

String[] str = temp.split("%u");
String s1 = "";
for(int i=1; i<str.length; i++){
s1 = s1+(char)Integer.parseInt(str[i],16);
}
System.out.println(s1);
stan001140 2009-11-30
  • 打赏
  • 举报
回复
按错了,其中s.toString()是不必要的,
stan001140 2009-11-30
  • 打赏
  • 举报
回复
你的java基础比较差了点。
s的值是"\\\\u5904\\\\u7406\\\\u4E2D",你断点时鼠标移过去看值就知道。
打印的结果当然是"\\u5904\\u7406\\u4E2D",其中"\\"是转义后的"\"
而"\u5904\u7406\u4E2D"的值是中文,因为\u是转义后面带四个十六进制的,所以值为中文

你试一下下面的程序就知道都是打印中文
String temp = "Aty_cnp_%5904";
String s = temp.substring(temp.indexOf("%")).replace("%5904", "\u5904");
System.out.println(s.toString());
System.out.println("\u5904");
hubert_bubert 2009-11-30
  • 打赏
  • 举报
回复
测试发现s.equals("\\u5904\\u7406\\u4E2D")为true
内容概要:本文围绕通过短时倒谱(Cepstrogram)计算进行时-倒频分析的研究,提出了一种基于Matlab的信号处理方法,旨在从复杂信号中提取时变的倒频域特征,尤其适用于具有非线性反馈的LTI系统识别。文中系统阐述了短时倒谱的理论基础、计算流程与实现机制,并结合Simulink与Matlab代码实现了多个典型应用案例,涵盖非线性系统辨识、路径损耗建模、信号去噪与增强等,充分展示了该方法在系统建模与信号分析中的强大能力。研究不仅提供了完整的算法实现方案,还深入探讨了其在科研与工程实践中的广泛应用前景。; 适合人群:具备扎实的信号处理理论基础与Matlab编程能力,从事自动化、通信工程、电子工程、控制科学等领域的高校研究生、科研人员及工程技术人员。; 使用场景及目标:①实现对具有非线性反馈的LTI系统的精确建模与参数辨识,提升系统识别的准确性与鲁棒性;②在强噪声背景下进行有效的信号特征提取与时-倒频域分析,恢复信号的有效成分;③作为高级信号处理的教学与科研平台,帮助深入理解倒谱分析的物理意义及其在现代工程中的实际应用。; 阅读建议:建议读者在学习过程中紧密结合文中提供的Matlab代码与Simulink模型进行动手实践,通过调整参数、修改输入信号等方式观察分析结果的变化,以加深对算法机理的理解;同时可访问作者提供的网盘资源与完整代码包,系统性地掌握相关技术的优化与拓展方法。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧