用java打印语句怎么在控制台输出特殊字符--比如:欧元符号€,这是一个关于java运行环境字符集编码的问题

itpentiuman 2010-08-06 11:41:02
我写了一个组装协议的程序,将某个字符串编码之后会出现像欧元符号€这样的特殊符号,但是我将欧元符号€打印到控制台显示的是问号,其他特殊符号也是一样。
这说明jvm不识别这个符号,我估计是java编译器编码的原因,于是用"javac -encoding utf-8 MyClass.java" 编译我的java类,再看运行结果,依旧打印出问号。
欧元符号€是属于unicode字符集的,对应utf-8编码中的0x0080,即十进制的128。
理论上讲,java使用的是unicode编码,运行环境中的字符集应该也是unicode,但我感觉我机器的JVM的运行时的字符编码集是GBK,因为gbk不包含欧元符号€,所以会打印出问号。
我的问题是,如何打印出一个欧元符号€
这是测试代码:

public class Test {
public static void main(String[] args) {
//这句会打印出问号
System.out.println("直接打印:€");
//这句还是会打印出问号
System.out.println("通过UNICODE转码打印:\u0080");
//这是我的协议字符串
StringBuffer protocalSb=new StringBuffer();
//协议里面的其他信息
protocalSb.append("协议里面的其他字符串abcd1234^&*( ");
//这里是个让我无语的特殊符号,当然协议里面还可能有很多个其他特殊符号
protocalSb.append("€");
//协议里面的其他信息
protocalSb.append(" 协议里面的其他字符串abcd1234^&*(");
//这里会将上面append的"€"打印成问号,其他字符正常
System.out.println(protocalSb.toString());
//因为此时protocalSb.toString()里面的"€"变成了"?",所有后面我要对它进行解析就会出错
}
}


这是上述代码的输出结果

直接打印:?
通过UNICODE转码打印:?
协议里面的其他字符串abcd1234^&*( ? 协议里面的其他字符串abcd1234^&*(


...全文
2516 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChDw 2010-08-06
  • 打赏
  • 举报
回复
正确的编码应该是"\u20AC"吧。我在Eclipse中运行很正常,我指定的机器默认编码是GB18030(需要你系统安装包的)
huguang 2010-08-06
  • 打赏
  • 举报
回复
中文系统,控制台默认编码是GBK,不识别unicode很正常,貌似改编码要改注册表。
huguang 2010-08-06
  • 打赏
  • 举报
回复
这个不是Java的问题,是Console本身的问题。
ChDw 2010-08-06
  • 打赏
  • 举报
回复
JVM默认编码需要在启动参数中指定,调用setProperty是没有用的

java -Dfile.encoding=GB18030 ...
itpentiuman 2010-08-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huguang 的回复:]
中文系统,控制台默认编码是GBK,不识别unicode很正常,貌似改编码要改注册表。
[/Quote]
我在网上查询说window的编码固定是utf-16,有的说在“区域和语言选项”可以更改,不过我没看到。
又得知Eclipse控制台的编码是和项目的编码一致,我将项目的编码设置成utf-8,再试还是不行。
最后,我又用System.setProperty("file.encoding","utf-8");尝试设置jvm的编码,再看结果,我无奈的“擦”了一声,还是不行。此时我仿佛看到了山的那边海的那边有一群草泥马~~~~~当程序员真tm不易,其实这个问题都是由我要弄anydata cdma模块发短信引申出来的,网上资料找遍了,能问的人也问了,网上好心人还是多,只是没能解决我的问题~~~草了,散分。。
内容概要:该论文研究了一种基于粒子群优化(PSO)的STAR-RIS辅助NOMA无线通信网络优化方法。STAR-RIS作为一种新型可重构智能表面,能够同时反射和传输信号,与传统的仅能反射的RIS不同。结合NOMA技术,可以提高覆盖范围、同时服务的用户数量和频谱效率。由于STAR-RIS元素众多,获取完整信道状态信息(CSI)开销大,因此作者提出在不依赖完整CSI的情况下,联合优化功率分配、基站波束成形以及STAR-RIS的传输和反射波束成形向量,以最大化总可实现速率,同时保证每个用户的最低速率要求。仿真结果表明,该方案优于STAR-RIS辅助的OMA系统。论文还提供了详细的Python代码实现,包括系统参数设置、信道模型、速率计算、目标函数、约束函数、主优化函数和结果可视化等内容,完整再现了论文中的关键技术方案。 适合人群:通信工程领域的研究人员、高校教师和研究生,特别是对智能反射面技术、非正交多址接入技术和智能优化算法感兴趣的读者。 使用场景及目标:①研究和开发基于STAR-RIS的无线通信系统;②探索PSO算法在无线通信优化中的应用;③评估STAR-RIS-NOMA系统相对于传统OMA系统的性能优势;④为实际通信系统设计提供理论依据和技术支持。 其他说明:该论文不仅提出了创新的技术方案,还提供了完整的代码实现,便于读者理解和复现实验结果。此外,论文还讨论了与其他优化方法(如DDPG)的对比,并分析了不同工作协议(如模式切换、时间切换和能量分配)的性能差异,进一步丰富了研究内容。

62,636

社区成员

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

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