我必须使用Java
完成此任务第1部分:使用字符基元数据类型输出€188。使用Unicode作为欧元符号€
Part2:将以下char变量'j''o''e'更改为大写JOE并输出结果。
我用过这段代码,我错过了什么?
public class Test27 {
public static void main (String args[]){
System.out.println("\u20ac" +"188");
String changeCase= "joe";
String result;
result=changeCase.toUpperCase();
System.out.println( result);
}
}
干杯
答案 0 :(得分:6)
如果问题只是欧元标志变得混乱 - 即程序
import java.io.*;
public class Foo {
public static void main (String args[])
throws Exception
{
System.out.println("\u20ac");
}
}
然后,您需要使Java发出的编码与显示Java输出的事物所期望的编码相匹配。我假设你在命令行工作。
在Linux上,这应该可行。默认情况下,一切都是UTF-8。
在Mac上,在Terminal.app中,这不起作用,因为出于某种疯狂的原因,Java的默认文本编码是没有欧元的ancient MacRoman character set。但是Terminal.app完全支持UTF-8。从技术上讲,您可以在终端→首选项→设置→高级→国际中关闭它,但默认情况下它是UTF-8。
要将java设置为使用UTF-8输出,可以传递命令行参数
java -Dfile.encoding=UTF-8 Foo
但只有在你可以控制你的程序启动时才有效。如果您要发送JAR或.class
文件供其他人运行,那将无效。您可以通过创建一个将使用不同编码写入System.out
的对象来自行设置编码:
import java.io.*;
public class Foo {
public static void main (String args[])
throws Exception
{
PrintWriter out = new PrintWriter(
new OutputStreamWriter(System.out, "UTF-8"), true);
out.println("\u20ac");
}
}
只要您记得始终使用新的out
变量进行打印而不是System.out
。
在Windows上它变得更加疯狂。命令提示符下的默认编码因Windows的不同语言版本而异。在英文版的Windows上,它是Cp850。在俄语版Windows上,它是Cp866。欧元符号都没有!您可以使用chcp
命令更改编码,但即使将其更改为具有欧元符号的编码,默认命令提示字体也不具有欧元符号!
您可以从Java检测到您在Windows命令提示符下运行,以编程方式更改编码和字体,然后输出您的字符串,但这是很多工作。你可能最好只使用上面的代码来强制输出UTF-8,并在你的代码中加入指令(如果要在Windows命令提示符下运行),用户首先需要:
chcp 65001
将命令提示符编码切换为UTF-8 为了方便您,但为了增加您编写的代码仅在您的计算机上运行的机会,您还可以change the default command prompt code page to UTF-8。
答案 1 :(得分:1)
如果输出是乱码而不是欧元符号,那么运行该程序的控制台可能存在问题。确保它能够打印€并且平台的默认字符编码与控制台的字符编码匹配。