使用unicode显示欧元符号并将字符更改为大写

我必须使用Java来实现这一目标

第1部分:使用字符原始数据类型输出€188。 使用Unicode作为欧元符号€

第2部分:将以下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); } } 

干杯

如果问题只是关于欧元标志变得混乱 – 那就是程序

 import java.io.*; public class Foo { public static void main (String args[]) throws Exception { System.out.println("\u20ac"); } } 

然后,首先你必须阅读绝对最低每个软件开发人员,绝对必须知道关于Unicode和字符集(没有借口!) 。

然后,您需要使Java发出的编码与显示Java输出的事物所期望的编码相匹配。 我假设你在命令行工作。

  • 在Linux上,这应该工作。 默认情况下,一切都是UTF-8。

  • 在Mac上,在Terminal.app中,这不起作用,因为出于某些疯狂的原因,Java的默认文本编码是没有欧元的古老MacRoman字符集 。 但是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命令提示符下运行,那么用户首先需要:

    1. 运行chcp 65001将命令提示符编码切换为UTF-8
    2. 通过单击左上角的图标,选择“属性”,然后转到“字体”选项卡,将字体切换到Lucida控制台。

    为了使您更容易,但为了增加您编写的代码仅在您的计算机上工作的机会,您还可以将默认命令提示符代码页更改为UTF-8 。

在此处输入图像描述在此处输入图像描述

如果输出是乱码而不是欧元符号,那么运行该程序的控制台可能存在问题。 确保它能够打印€并且平台的默认字符编码与控制台的字符编码相匹配。