首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

Eclipse显示日文乱码解决办法 (转)

2012-10-07 
Eclipse显示日文乱码解决方法 (转)?不是当前编码的文字的Eclipse中显示会是乱码,解决办法:????????? proje

Eclipse显示日文乱码解决方法 (转)

?

不是当前编码的文字的Eclipse中显示会是乱码,

解决办法:

????????? project->properties

resource

修改 text file coding属性,如果Other下拉列表中没有需要的编码,直接在文本框里边填入SHIFT-JIS

?

?

参考如下:

?

?

?

最近因为工作需要,研究了一下关于日文内码的问题。下面这篇文章写的不错,留下来用以备忘。


转载: http://blog.csdn.net/jackyren007/archive/2008/07/31/2743779.aspx


1、常用编码

日语的文字编码主要是Shift_JIS、EUC-JP、ISO-2022-JP这三种。

(1)Shift_JIS主要是Windows和Macintosh使用的文字编码。

Shift_JIS 的文字集合基本是按照JIS X 0208规定的。但实际上各个厂商各自进行扩展,包含了大量重复的、规格以外的文字。因此,Windows在本来的 Shift_Jis的文字集合之外,又增加了NEC扩展、IBM扩展所包含的文字。这种规格和实际情况的分歧长期存在,随着windows-31J的规格 化,混乱情况有所改善。

(2)EUC-JP是被Linux和Solaris广泛地使用的文字编码。

(3)ISO-2022-JP主要被Email使用的文字编码。 只使用7个bit,第8个bit不使用,所以不适合程序中的字符串处理,主要使用在网络中的数据交换中。
------------------------------------
2、Shift_JIS和Windows-31的不同点

Shift_JIS/Windows-31J → Unicode的映射
-----------------------------
JIS X 0208の文字???? Shift_JIS/Windows-31Jのコード????? Shift_JIS→Unicode????? Windows-31J→Unicode?
-----------------------------
~ (1-33, WAVE DASH)????? 8160????????????? U+301C????????? U+FF5E?
∥ (1-34, DOUBLE VERTICAL LINE)????? 8161????????? U+2016????????? U+2225?
- (1-61, MINUS SIGN)????? 817C????????????? U+2212????????? U+FF0D?
¢ (1-81, CENT SIGN)????? 8191????????????? U+00A2????????? U+FFE0?
£ (1-82, POUND SIGN)????? 8192????????????? U+00A3????????? U+FFE1?
¬ (2-44, NOT SIGN)????? 81CA????????????? U+00AC????????? U+FFE2?
IBM独自拡張?????????????????????? ×????????? ○?
NEC独自拡張?????????????????????? ×????????? ○?
-------------------------------------------------
用户自定义文字,被映射到Unicode的私用领域。

转换器???????? Shift_JIS范围????? Unicode范围
------------------------------
Windows-31J????? F040~F9FC????? E000~E757?


Unicode → Shift_JIS/Windows-31J 的映射
--------------------------------------------
Unicodeの文字????????? Unicodeのコード????????? Shift_JIS????????? Windows-31J?
∥ (DOUBLE VERTICAL LINE) U+2016????????????? 8161????????? ×?
- (MINUS SIGN)????????? U+2212????????????? 817C????????? ×?
~ (WAVE DASH)????????? U+301C????????????? 8160????????? ×?
- (FULLWIDTH HYPHEN-MINUS) U+FF0D????????? ×????????? 817C?
~ (FULLWIDTH TILDE)????? U+FF5E????????????? ×????????? 8160?
¢ (FULLWIDTH CENT SIGN) U+FFE0????????????? ×????????? 8191?
£ (FULLWIDTH POUND SIGN) U+FFE1????????? ×????????? 8192?
¬ (FULLWIDTH NOT SIGN) U+FFE2????????????? ×????????? 81CA?


总结一下,Shift_JIS和 Windows-31J 有以下两点不同:
<1>Windows-31J包括IBM的扩展文字和NEC的扩展文字。
<2>一些符号转换为Unicode的编码点是不同的。?

所以,通常使用 Windows-31J可以避免一些问题。
=================================================================

3.Java中的MS932就是Windows-31J

WebLogic Server 8.1 SP1 及更高版本的 Service Pack 使用 JDK1.4.1 或更高版本,并会影响 Shift_JIS 区域。在 WebLogic Server 7.0 及以前的版本使用的 JDK(JDK1.3) 中,“Shift_JIS”Java 编码名的别名是 “MS932”。

对于 WebLogicServer 系统中的 IANA-Java 映射,IANA 字符集名“Shift_JIS” 作为 Java 编码名 Shift_JIS 进行处理。因此,在 JSP、Servlet 或 Web Service 使用 Shift_JIS 时,其操作将与以前版本不同。例如,MS932 专有字符(“@”等)将变为“?”。因此,如果希望一如既往地使用 MS932,则应当使用 IANA 名称“Windows-31j”。要使用 MS932,请采用下面的方法 1 或 2。

方法 1 --- 重写 JSP/Servlet 的程序文件。

--- 对于 JSP,在 page 标记中将 Shift_JIS 重写为 Windows-31J。
示例:
当 JSP 中存在以下行且使用 MS932 字符时,请将

<%@ page contentType="text/html; CHARSET=Shift_JIS" %>

重写为:

<%@ page contentType="text/html; CHARSET=Windows-31J" %>

--- 在 Servlet 中更改 setContentType() 的规范。
对于 Servlet,当存在以下规范且使用 MS932 字符时,请将

response.setContentType("text/html;charset=Shift_JIS");

重写为:

response.setContentType("text/html;charset=Windows-31J");

“Windows -31J”是使用 IANA 正式注册的字符集名称,等同于 Microsoft 代码页 932。同样,对于 Java 来说,MS932 与 Microsoft 代码页 932 相关联。因此,Java 中的“MS932”便是 IANA 的“Windows-31J”。实际上在 Java 中,“Windows-31J”也是 MS932 的别名。就目前而言,保持 Java 编码名与 IANA 名称的一致渐成趋势。如果将来希望使用对应于 Microsoft 代码页 932 的字符集,则强烈建议使用“Windows-31J”。

方法 2 --- 在 weblogic.xml 中更改映射(不遵从 J2EE)

在 weblogic.xml 部署描述符文件中,可以将 IANA 名称 Shift_JIS 强制映射为 Java 名称 Windows-31J。这样,您可以不必重写 JSP 或 Servlet 代码,便能够将 Shift_JIS 作为 Windows-31J 进行处理。请在 weblogic.xml 中包括以下项,然 后重新部署 Web 应用程序。

<weblogic-web-app>
?? <charset-params>
???? <charset-mapping>
?????? <iana-charset-name>Shift_JIS</iana-charset-name>
?????? <java-charset-name>Windows-31J</java-charset-name>
???? </charset-mapping>
?? </charset-params>
</weblogic-web-app>

但 是,这种方法是 WebLogic Server 特有的,不遵从 J2EE。换句话说,它不能与其他 J2EE Servlet 容器交互操作。 “Shift_JIS”IANA 名称为等同于 JIS X 0201 + JIS X 0208 的字符集。因此将此字符集当作 Microsoft 代码页 932 使用是不合适的。仅在由于某些原因难于更正 JSP 或 Servlet

热点排行