Encoding 如何将在字符集UTF8中创建的数据作为字符集Shift JIS写入文件而不丢失字符
我正在通过查询数据表单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:[用户名]Encoding 如何将在字符集UTF8中创建的数据作为字符集Shift JIS写入文件而不丢失字符,encoding,utf-8,shift-jis,Encoding,Utf 8,Shift Jis,我正在通过查询数据表单DB创建文件,并使用它创建文件,情况如下: 数据库:带有字符集UTF8的Oracle 应用服务器:带字符集UTF8的树脂 应用程序框架:NTT Intra-Mart(一个基于Rihno并使用javascript作为服务器程序语言的日语框架) 需要:从Oracle查询数据并使用字符集[Shift JIS]创建文件,该文件用作中间文件,由一个系统导出,并使用FTP传输到另一个系统进行导入。 文件需要具有固定的字节范围,目标服务器才能找到要导入的指定数据: 例如 字节1-10:[
您能给我一些建议吗?您必须使用字符集名称
Windows-31J
,而不是Shift-JIS
数据1-10-1
将从Microsoft IME中键入。Microsoft IME用于U+FF0D
(全宽连字符减号)来表示字符-
未映射到JavaVM中Shift-JIS-Unicode映射中的任何字符。因此,当您将JVM内部表示(UTF-16)中的U+FF0D
转换为带有字符集的Shift JIS时,您将得到-
?
在Windows-31J中映射到U+FF0D
,在JavaVM中映射到Unicode。因此,当您将JVM内部表示(UTF-16)中的0x817C
转换为带有字符集-
的Shift JIS时,您将得到Windows-31J
-
Windows-31J
,而不是Shift-JIS
数据1-10-1
将从Microsoft IME中键入。Microsoft IME用于U+FF0D
(全宽连字符减号)来表示字符-
未映射到JavaVM中Shift-JIS-Unicode映射中的任何字符。因此,当您将JVM内部表示(UTF-16)中的U+FF0D
转换为带有字符集的Shift JIS时,您将得到-
?
在Windows-31J中映射到U+FF0D
,在JavaVM中映射到Unicode。因此,当您将JVM内部表示(UTF-16)中的0x817C
转换为带有字符集-
的Shift JIS时,您将得到Windows-31J
-