# MySQL - Java - Japanisch (Kanji)



## Tine (18. Aug 2004)

Hallo,

Ic habe folgendes Problem, bei dem ich hoffe, dass mir ev. jem. helfen kann.
Ich verwende eine MySQL Database, in der ich Japanische Zeichen in SJIS speichere. Habe getestet ob die Zeichen auch wirklich in SJIS gespeichert werden und ob ich diese auch wieder ausgegeben kann. Sie werden es, zumindest bekomme ich bei einem Select Statement, dessen Ausgabe ich in eine Datei schreibe SJIS codierte Zeichen raus (ich mache das über DOS Eingabeaufforderung).

Ich verwende: mysql 4.1.3b-beta, mysql-connector-java-3.0.14, JBuilderX (jdk 1.4.2), und OS XP.
Ich habe auch das default character set von MySql von latin1 auf sjis geändert.

Wenn ich allerdings versuche auf die Daten über Java zuzugreifen, bekomme ich nur seltsame Zeichenketten raus. Immer ein Quadrat (als ob es das Font nicht kennen würde), dann irgendein Zeichen, dann wieder ein Quadrat usw. Habe auch einige lateinische Zeichen in der DB, die ich ohne weiteres ausgeben kann.

Ich kann sonst Japanische Zeichen ohne Probleme in Java darstellen, glaube also nicht, dass es an einem falschen Font liegt. Hab auch schon versucht die von Java geholten Zeichen in eine Datei auszugeben, bekomme dort aber auch  nur die komischen Zeichenketten.


Mein Java Code sieht so aus:


```
public void testDB(){

String result ="";
Connection con = null;
Statement st = null;

try
{

Properties prop = new java.util.Properties();
prop.put("user","");
prop.put("password","");
prop.put("useUnicode", "true");
prop.put("characterEncoding","SJIS");

String url = "jdbc:mysql://localhost/japanese";
//Class.forName ("org.gjt.mm.mysql.Driver");
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
con = DriverManager.getConnection (url, prop);
result= "Database connection established";

st = con.createStatement();
ResultSet rs = null;

String querry1 = "SELECT * FROM jp";
PreparedStatement pstmt = con.prepareStatement(querry1);
rs = pstmt.executeQuery();

int i = 0;
while (rs.next()) {
result = rs.getString(1);
jTable1.setFont(new Font("Arial Unicode MS",0,15));
jTable1.setValueAt(result,i,0);
i++;
}
}
catch (Exception e)
{
// result = "Cannot connect to database server";
}
finally
{
if (con != null)
{
try
{
con.close ();
// result ="Database connection terminated";
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
```

Danke für jede Hilfe,
Chris


----------



## semi (18. Aug 2004)

Gibt es den Zeichensatz in mysql\share\charsets?


----------



## Tine (18. Aug 2004)

Hallo, 

Also bei mir ist unter share\charsets eine index.xml Datei wo sjis erwähtn wird:

<charset name="sjis">
<family>Japanese</family>
<description>Shift-JIS Japanese</description>
<alias>s-jis</alias>
<alias>shift-jis</alias>
<alias>x-sjis</alias>
-
	<collation name="sjis_japanese_ci" id="13" order="Japanese">
<flag>primary</flag>
<flag>compiled</flag>
</collation>
-
	<collation name="sjis_bin" id="88" order="Binary">
<flag>binary</flag>
<flag>compiled</flag>
</collation>
</charset>



Es gibt aber keine extra .xml Datei mit dem Namen sjis. Es gibt aber welche für ascii.xml, latin1.xml, .... Fehlt mir da ev. die sjis.xml Datei? Wo könnte ich die herbekommen?
Es gibt alledings im share Verzeichnis einen Ordner Japanese wo die Datein errmsg.sys und errmsg.txt drinnen sind.



Danke,
Chris


----------



## semi (18. Aug 2004)

Sorry, das weiss ich nicht.
Ich habe es gefragt, da ich sowas bei mir auch nicht gefunden habe.
Vielleicht findest Du etwas auf den MySQL Seiten.
http://dev.mysql.com/doc/mysql/en/Charset-asian-sets.html


----------

