JAVA字符编码及欧元符系列(二)

从 Open SQL JOIN 走向 ABAP CDS Association:把查询写成可复用的数据模型 摘要: 本文通过飞行模型示例,对比了ABAP中三种表关联实现方式:Open SQL JOIN、CDS显式JOIN和CDS Association。重点解析了Association的本质是将表关系声明为数据模型语言,使用时通过路径表达式按需展开为JOIN。文章指出路径表达式在不同位置会默认展开为不同JOIN类型(如SELECT列表默认为LEFT OUTER),并演示了如何用[inner]强制指定INNER JOIN。最后结合S/4HANA实际案例,说明Association通过中心化关系定义和路径复用,能有效 阅读详情

在做项目的过程中,要把欧元符写入到结果文件,作为不同字段的分隔符。仅仅是这一个小问题,还真是难倒了我,花费了不少的时间,下面把我遇到的问题和处理的过程同大家分享,希望其他人在这方便少走弯路。

为了不误导大家,先说一下相关开发环境,因为字符编码的问题和环境的相关性非常大。

IDE:myeclipse 10

OS:windows7

myeclipse的所有编码格式都为UTF-8

错误方法一:

直接写入欧元符字符串。

File file = new File("test.txt");
FileWriter writer = new FileWriter(file);
writer.write("€");

用UE打开文件,显示?,用十六进制方式查看为3F,这是java内部转码失败的表现。

错误方法二:

经过google搜索,说是欧元符的编码是128,不在基本ASCII编码表之内,就打算直接写入字节(0x80)

File file = new File("test.txt");
FileOutputStream writer = new FileOutputStream(file);
writer.write(0x80);

用UE打开结果文件,看到了期待已久的欧元符。但是这种方法在linux系统下失败,用vi查看时显示的是<80>,产生的文件编码格式为Latin-1,也就是ISO-8859-1。而在windows下用UE打开结果文件的默认编码格式为操作系统默认编码(GBK),关于ASCII编码、ISO-8859-1编码、GBK编码、windows 默认编码(基础为GBK)的区别,请参考我的下一篇文章。

下面再说说我的错误认识。

错误认识一:欧元符是ASCII的扩展字符。

因为互联网上很多人说欧元符的ASCII编码是128,即0x80,所以认为欧元符就是ASCII扩展编码的一部分,并且在windows下UE打开能够正常显示欧元符,所以写欧元符成功。

错误认识二:欧元符是ISO-8859-1编码的一部分,并且编码为:128(0x80)

ISO-8859-1是ASCII的扩展集,最多可以表示的字符为256个,但是欧元符却不属于ISO-8859-1,直到ISO-8859-15时才加入欧元符,编码为0xA4,所以在windows 下UE能够争产显示编码为0x80的欧元符是另有原因的。

在windows平台下,默认的字符编码集为CP936,产被视为GBK,这里需要注意,和GBK不是完全相同,真正的GBK标准比CP936多95个汉字。国标的GBK经过了好几个版本的升级换代,或添加或删除或修改了部分字符或汉字的编码,我们完全不用关心这些,因为在windows上执行的完全是CP936的标准,写的文件默认为CP936的编码。查询微软的cp936编码表得知,欧元符被编码在0x80的位置,所以文件内的0x80字节在windows下打开可以正常显示欧元符。

但是怎样才能写入无论windows还是linux都能正常显示的欧元符呢?

可以有两种方法:


方法一:"€".getBytes("utf-8")

方法二:new String("\u20AC").getBytes("utf-8")


http://zh.wikipedia.org/wiki/ISO/IEC_8859-1
http://zh.wikipedia.org/wiki/ISO/IEC_8859-15
http://msdn.microsoft.com/zh-cn/goglobal/cc305153.aspx
http://zh.wikipedia.org/wiki/GBK



Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文) 附安装包网盘下载 Hadoop+Spark+Flink+Zookeeper+Kafka+Hbase+Hive完全分布式高可用集群搭建 Hadoop高可用集群搭建 Spark高可用集群搭建 Flink高可用集群搭建 Zookeeper高可用集群搭建 Kafka高可用集群搭建 Hbase高可用集群搭建 Hive高可用集群搭建 mysql搭建 jdk部署 大数据集群环境搭建 阅读详情

相关推荐

STM32F407标准库下ADC多通道DMA采集的配置与优化

本文详细介绍了STM32F407标准库下ADC多通道DMA采集的配置与优化方法。通过GPIO模拟输入配置、ADC时钟和模式设置、DMA传输参数配置等关键步骤,实现高效的多通道数据采集。文章还提供了性能优化技巧和常见问题排查指南,帮助开发者提升采样速率和稳定性。

weixin_29192141的博客 434

java基础之符号

java基础之符号的定义,使用

qq_61669959的博客 3921

倍福TwinCAT3 OPC UA配置全流程:从安装到无密码访问(附常见问题解决)

本文提供了倍福TwinCAT3 OPC UA配置的完整实战指南,重点讲解如何实现无密码游客访问。从软件安装、授权配置、服务器初始化到深度排错,详细解析了配置流程中的关键步骤与常见陷阱,帮助工程师高效打通PLC与上位系统的数据通讯通道。

vulkan6gpu的博客 472

欧元符(€)之谜

为什么80%的码农都做不了架构师?>>> ...

weixin_33691817的博客 2832

全球最大光伏电池缺陷异常检测数据集PVELAD【发布】

下载地址 1:GitHub - binyisu/PVEL-AD 下载地址 2:http://aihebut.com/col.jsp?id=118 下载地址 3:NAVEDownload 竞赛测试系统:Photovoltaic cell anomaly detection | Kaggle 一、简介 PVEL-AD 数据集又叫做EL2021数据集是用于对光伏电池异常缺陷检测方法进行基准测试的数据集,重点是光伏电池工业检测。PVEL-AD包含 36,543 张具有各种内部缺陷和异构背...

苏打水的杯子的博客 2万+

ABAP Cloud 开发教程的文章目录

本教程涵盖 ABAP 云端 Client 处理、多租户架构、ABAP Cloud开发、动态编程优化、SQL语法改进等技术主题。最新版本1.0.0(更新至2025-12-12),包含197篇文章,重点文章包括《ABAP Client Handling与隔离机制》《ABAP Platform 2021泛型编程》《SAP BTP ABAP多租户应用开发》等,为开发者提供从基础到进阶的实战指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1804

Java基础小知识(总结)——数据类型、符号、常量、变量

菜鸟得Java基础知识,你需要了解的数据类型与Java基础知识。

TS194919892003的博客 1763

PCL 八叉树的使用

八叉树(Octree)是一种空间划分的数据结构,广泛应用于三维点云的处理和分析。八叉树通过将空间递归地划分为八个子区域,可以有效地组织和索引三维点数据,提升点云的查询、降采样和配准等操作的效率。

纵马踏花向自由 1658

【Java】Java运算符详解(史上最全)

【详解】【Java】Java运算符是用于执行各种数学、逻辑和位运算的符号。

tttzzzqqq2018的博客 5598

Python数据可视化 Pyecharts 制作 Map 地图

大家好,我是Mr数据杨。想象一下,作为一名军师,如诸葛亮或郭嘉,'Map’就如同那战争的沙盘,兵马行动的轨迹,都需要准确的地图作为基础。‘基本设置’,就如同摆设这张战争沙盘,规定棋子的起始位置。‘数据配置选项’和’地图数据项’,就好比是军师们手中的情报,了解各路诸侯的兵力、粮草、地形等重要信息,以便于他们更好地布局。‘Demo’则代表着练兵之地,军师们可以在此基于已有数据,试验各种战术。

Mr数据杨 4万+

基于simulink的多能源系统协同控制的复杂场景实例:氢燃料电池+锂电池混合动力电动汽车能量管理仿真

本文介绍了基于Simulink的氢燃料电池与锂电池混合动力电动汽车能量管理系统的建模与仿真方法。系统包含驾驶循环输入、氢燃料电池、锂电池、能量管理和电机驱动等模块,通过Simulink实现各模块的协同控制。文章详细说明了从模型创建到性能评估的完整流程,包括驾驶循环输入设置、燃料电池和锂电池子系统建模、能量管理策略设计等关键步骤。该仿真模型可验证不同工况下的系统响应和能量利用效率,为优化混合动力汽车的能量管理策略提供有效工具。通过引入更复杂的物理细节和环境因素,可进一步提升模型的实用性和准确性。

xiaoheshang_123的博客 368

Java运算符讲解附例子说明(大全)

Java运算符分为六大:算术运算符、赋值运算符、比较运算符、逻辑运算符、条件(三目)运算符、位运算符 一、算术运算符:+,-,*,/,%,++,-- 二、赋值运算符:=,+=,-=,*=(),/=,+(字符串连接符) 三、比较运算符:>,=,>>(无符号运算符),~(非、取反运算符.........

快乐学习 1万+

(十五)CX20106A 中超声波测量的应用

(十五)CX20106A 中超声波测量的应用

m0_52555663的博客 4511

深入理解计算机编码与字符集的区别

1、编码表与字符集的区别 比如,unicode是编码表(万国码),但计算机如何存储编码(几个字节存储),这时候要用到字符集(UTF-8) 举例: 用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件 2、ASCII扩展码字符和GBK混合写入文件 使用JavaIO流同时将欧元符€和汉字写入文件。 FileOutputStream out = new FileOutputStream("E:/tm.

学无止境! 554

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java 常用符号和运算符总结

Java 常用符号和运算符总结

qq_35368296的博客 1420

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java所有运算符详解,你想要的这里都有(08)

运算符的基本概念,以及算术运算符(+ - */)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符的详解。

weixin_45881074的博客 1071

java欧元货币输出符号位置_java – 使用unicode显示欧元符号并将字符更改为大写...

如果问题只是关于欧元标志变得混乱 – 那就是程序import java.io.*;public class Foo {public static void main (String args[])throws Exception{System.out.println("\u20ac");}}然后,您需要使Java发出的编码与显示Java输出的事物所期望的编码相匹配.我假设你在命令行工作.>在...

weixin_42463165的博客 445

java识别不了欧元 符号,Java 实现在文件中写入特殊字符,例如:欧元符号€

之所以考虑到把这块写上是因为需求中经常会让你用某些特殊符号作为数据文件的分隔符,所以在这里简单做下总结。一般的数据抽取文件格式为 :广东省|深圳市|彩铃注册人次数|彩铃计费人次数广东省|深圳市|1000|2000其中以"|" 为分隔符。这样就可以有两种写法:1. 直接输入|2. 查看UltraEdit 中的 ASCII对照表,用char强转10进制数例如:(char)124但有个头疼的问题:...

weixin_35801828的博客 905

java编程符号大全_数学符号大全

前言不知道有没有同学在csdn上写博客跟我一样,想写一个数学公式却苦于没有数学符号,例如我想打出一个属于符号,只能打出(-这种丑陋的符号,正好发现有位同学博客里贴出了很多常用的数学符号,这里转载一些,感谢这个同学的辛苦劳动,原文链接:http://blog.youkuaiyun.com/dl88250/article/details/4027668、数学符号运算符: ± × ÷ ∶∫ ∮ ≡ ≌ ≈ ∽ ∝ ...

weixin_29713915的博客 3113

java符号&、| 、~、^、&&、||、!

位逻辑运算符: &: 位与运算符,只有两个操作数都是true,结果才是true。 | : 位或运算符,只有两个操作数都是false,结果才是false。 ~: 位非运算符:如果位为0,结果是1,如果位为1,结果是0. ^: 位异或运算:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。 位同或运算:两个数转为二进制,然后从高位开始比较,如果相同则为1,不相同则为0。java中并没有同或运算符,可以通过异或转换得到。同或运算 = 异或运算 ^ 1 逻辑运算符: &&a

qq_44750892的博客 4987

java识别不了欧元 符号_java – 使用unicode显示欧元符号并将字符更改为大写

如果问题只是关于欧元标志变得混乱 – 那就是程序import java.io.*;public class Foo {public static void main (String args[])throws Exception{System.out.println("\u20ac");}}然后,您需要使Java发出的编码与显示Java输出的事物所期望的编码相匹配.我假设你在命令行工作.>在...

weixin_39901943的博客 496

Java运算符

java运算符

qq_74812898的博客 1686

java基础(二)

*目标:**- 能够知道每种运算符的作用及使用特点- 能够理解+操作的三种情况- 能够知道顺序结构语句的执行流程- 能够使用Debug查看程序的执行流程- 能够根据需求选择合适的if语句实现- 能够知道switch语句执行流程和注意事项。

I_am_so_soSorry的博客 781

JAVA知识点总结——Java基本语法(详细版)

JAVA的单词符号有5种:标识符、关键字、分隔符、常量、运算符JAVA采用Unicode的字符集,该字符集合是一种新的编码标准,和常见的ASCII码的区别是该使用的是16个二进制表示的一个字符,ASCII使用的8位表示一个字符,并且增加了许多非拉丁语字符。

m0_74055982的博客 1804

在JAVA中如何使用ASCLL码

但是,对于ASCII字符集中的字符来说,它们的Unicode码点与它们的ASCII码是相同的,因此这种转换在这种情况下是有效的。)实际上是按照Unicode编码存储的,但由于ASCII是Unicode的一个子集,因此ASCII字符的Unicode编码与其ASCII编码相同。字符转ASCII码:在Java中,字符以Unicode形式存储,但ASCII字符是Unicode字符集的一个子集。为了避免混淆,最好始终记住Java使用的是Unicode,而不是ASCII,即使在处理ASCII字符时也是如此。

1764

java计算string utf8格式字符长度

java计算string utf8格式字符长度

sinat_25052547的博客 1037

字符的编码与乱码

看完本文你可以:遇到乱码不慌、分分钟搞定乱码问题、获得同事的肯定。

qq_28657577的博客 3719
上一篇: windows7系统下通过request.getRemoteAddr()获取ipv4地址
下一篇: 常见字符编码及基本概念
lichaoandy
博客等级 码龄19年 45粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值