Android中的羊角符

419 阅读5分钟

人民币符号为:¥。书写顺序为:先写大写字母“Y”,再在竖划上加上二横,即为“¥”,读音为:yuán(音:元)。

  • 1

百度百科日元羊角符描述:

日圆(円),又称作日元,其纸币称为日本银行券,是日本的官方货币,于1871年制定。日圆也经常在美元和欧元之后被当作储备货币。货币符号“¥”,国际标准化组织ISO4217订定其标准代号为JPY。日语罗马字写作Yen。

从定义上看,人民币羊角符和日元羊角符长得是一样的,在手写的时候不会区别对待,但是作为两种不同货币的符号,在计算机的世界中肯定需要区别!那么问题来了:

1、我们键盘直接敲出来的是中文羊角符还是日文羊角符? 2、另外一个羊角符长什么样? 3、怎样获取?

  • 1

  • 2

  • 3

区分人民币和日元羊角符

===========

我们将讨论人民币羊角符和日元羊角符的区分,现在我们有两种羊角符分别是键盘敲击出来的羊角符¥,另一个羊角符¥。两个羊角符在word、java代码和Android、IOS手机中表现稍有区别。为了区分,键盘敲击的羊角符¥设为A,另一个¥设为B。

1、金投网文章

金投网有一篇专门的文章,介绍了人民币羊角符和日元羊角符的区别,人民币羊角符号:人民币应该是¥,¥是日元

2、键盘和搜狗输入法

中文和日文很多符号本身是一样的,所以打印符号是中文还是日文其实很难分清,键盘的羊角符符号是A;但是,如果你用搜狗输入法,当输入“renminbi”时,会出现羊角符符号B。

3、从在word、代码、手机中视觉来看

(1)java代码中 这里写图片描述

(2)Word 2010中这里写图片描述

(3)华为P7 EMUI P7-L07系统中这里写图片描述

(4)小米2s MUI7 7.2.5.0系统中这里写图片描述

我们可以看到在word和两款Android操作系统中,两个羊角符差别明显,A只有一个横,B有两个横!!按照人民币羊角符的定义,B应该符合标准。如果Android手机中使用A羊角符,很肯能只出现一个横!如果开发人员两个符号都用…… 那界面定会不协调统一!

4、这两个羊角符的编码到底是多少?Java中货币类Currency给出的结果是什么?

首先确定系统编码:

System.out.println(Charset.defaultCharset()); 结果:UTF-8

  • 1

System.out.println((int)'¥'); A结果:165 System.out.println((int)'¥'); B结果:65509

  • 1

  • 2

println(Currency.getInstance(Locale.CHINA).getSymbol()); 结果:¥(B) println(Currency.getInstance(Locale.JAPAN).getSymbol()); 结果:JPY

  • 1

  • 2

  • 3

  • 4

到这,我想各位也糊涂了,我写到这时也快疯掉了,搞不清哪一个是人民币符号!

5、去查UTF-8表!

(1)首先确定两个羊角符编码

这里写图片描述

这里写图片描述

从查询结果可以看出,java代码打印的结果没问题,A的10进制为65509 16进制为FFE5,B的羊角符为165 16进制为A5。

(2) 查询UTF-8表:

A:

这里写图片描述

B:

这里写图片描述

Yen sign表示的意思是日元符号!按照UTF-8的解释,两个都是日元羊角符!!!!A是全角,B是半角!!!但是我用搜狗输入法全角、半角打印的结果都是A,也许是输入法的问题,但是无论如何,她两个区别终于解开了。

总结

==

折腾了这么久,我查询了GBK的编码表,用到的羊角符是A,其实这也没多大必要了,特别在APP开发时,只能用系统提供的符号库。其实人民币符号和日元符号本身就长一样,在计算机系统中我们的GBK定义了自己的符号,但是和utf-8是一样的,所以我们取到的还是utf-8提供的羊角符。

对于APP开发,特别是Android APP开发的工程师还是要注意这个问题,因为不同Android系统的字符库有很大区别,A类羊角符(全角)很可能是一横,但是我们人民币符号定义是两横,所以建议使用B类羊角符(半角),不会出现大问题。如果表示日元的话,可在前面加上JPY,用来区分。如果需要规范使用货币符号的话,可以使用Currency,像前面的例子那样,不过这样获取的羊角符是A类羊角符。

Currency.getInstance(Locale.CHINA).getSymbol()

  • 1