我正在通过查询数据表单DB并使用它来创建文件来创建文件,情况如下: 数据库:具有字符集UTF8的Oracle 应用服务器:带有字符集UTF8的树脂 应用程序框架:NTT Intra-Mart(基于Rihno并使用javascript作为服务器程序语言的日语框架) 需要:从Oracle查询数据并通过字符集[Shift-JIS]创建文件,该文件用作中间文件,该文件由一个系统导出,并通过FTP传输到另一个系统上进行导入。 该文件要求目标服务器具有固定的字节范围,以定位要导入的指定数据: 例如 字节1-10:[用户地址] 字节11-20:[用户名] 但是,首先我使用UTF8创建文件,似乎所有字符均正确显示,但是当我尝试使用字符集[SJIS]写入数据时,有一些全角字符变成半角问号[?],可能导致字节宽度缩短并且无法正确获取数据: 例如 当[用户地址]的数据为:1-10-1时,文件中的数据将变为1×10×1 字节1-10:[用户地址],但在当前文件中,用户地址为字节1-8 字节11-20:[用户名] 你能给我一些建议吗?
答案 0 :(得分:0)
您将不得不使用字符集名称Windows-31J
而不是Shift-JIS
。
将从Microsoft IME中键入数据1-10-1
。 Microsoft IME使用U+FF0D
(全副字符减号)来表示字符-
。
U+FF0D
在JavaVM的Shift-JIS-Unicode映射中未映射到任何字符。因此,当将?
从JVM内部表示(UTF-16)转换为具有字符集-
的Shift-JIS时,您将得到Shift-JIS
。U+FF0D
在Windows-31J中映射为0x817C
-JavaVM中的Unicode映射。因此,当将-
从JVM内部表示(UTF-16)转换为具有字符集-
的Shift-JIS时,您将得到Windows-31J
。