ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-29 00:12:46  阅读:380  来源: 互联网

标签:capitalization java 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");
    }
}

然后,首先你必须阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!).

然后,您需要使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
>通过单击左上角的图标,选择“属性”,然后转到“字体”选项卡,将字体切换到Lucida控制台.

为了方便您,但为了增加您编写的代码仅在您的计算机上运行的机会,您还可以使用change the default command prompt code page to UTF-8.

标签:capitalization,java,unicode
来源: https://codeday.me/bug/20190728/1567070.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有