Zeichensatz-Fehler

jgh

Top Contributor
Hallo,

ich benutze eine MySql-DB und habe nun per jdbc in eclipse eine Verbindung zur DB hergestellt. Per SQL-Dump habe ich ein paar Tabellen hergestellt und mit Inhalten gefüllt. Ich kann auf die Tabellen, sowie die Daten problemlos aus eclipse zugreifen....ALLERDINGS 😉:

wenn ich mir die Daten dann auf der Console anzeigen lasse...sind einige Buchstaben leider verkehrt, also die typischen wie "ü", "ß" usw.
in MySQL CommandLine Client werden sie mir korrekt angezeigt.
Ob ich den [c]System.setProperty("file.encoding", "UTF8" );[/c] aufrufe, oder auch nicht...es ändert nichts. 🙁
Auch in eclipse unter help->Preferences->General->Workspace habe ich mal UTF8 als FileEncoding angegeben...leider keine Auswirkung auf die Testausgabe auf der Console.

Habt ihr evtl ne Idee...wie man das fixen kann?

MfG
 
mmmh, also evtl. noch ein paar Infos:
also ich habe mir die mysql-5.5.11-win32.msi runtergeladen und mit dem Installer auf meinem win7, 32 bit System installiert.
Also Connector nutze ich mysql-connector-java-5.0.8 aus eclipse heraus.
Für die Verbindung zur Datenbank nutze ich die folgende Klasse:
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnect {
	private Statement statement;
	private Connection con;
	private ResultSet rs = null;

	public DBConnect() {
		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			con = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/derNamederDB", "user", "pw");
			statement = con.createStatement();
		} catch (InstantiationException e) {
			System.out.println("^1");
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			System.out.println("^2");
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			System.out.println("^3");
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println("^4");
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public ResultSet doQuery(String query) {

		try {
			rs = statement.executeQuery(query);
			return rs;
		} catch (SQLException e) {
			e.printStackTrace();
			return rs;

		}

	}

über die MySQL Command Line Client erstelle ich bspw folgendes Table:
SQL:
mysql>create table test(testbuchstabe char(50));
Query OK, 0 rows affected(0.13 sec)

anschließend schreibe ich meine 1 Zeile in diese Tabelle (händisch):
SQL:
insert into test values('äÄöÖüÜß');
Query OK, 1 row affected (0.29 sec)

wenn ich dann aus eclipse heraus wie folgt auf die DB zugreife:
Java:
DBConnect db = new DBConnect();
		ResultSet rs = db.doQuery("Select * from test");
		try {
			while (rs.next()) {
					System.out.print(rs.getString("testbuchstabe")+"\t");
				System.out.println();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
bekomme ich auf der Console folgende Ausgabe:
„Ž”™?šá

und nun weiß ich nicht weiter...HILFE^^
 
Zuletzt bearbeitet:
Danke erstmal für die Antwort...leider bekomme ich da folgende Ausgabe:

??????á

das problem müssten doch einige schon gehabt haben...
 
Hatte ich fälschlicherweise so in Erinnerung. :-/ Hab mir jz mal die UTF-8-Tabelle angeschaut und du hast recht.
 
danke für die tipps, aber leider führen die alle zum gleichen Ergebnis.

sowohl das
Code:
"?connectionCollation=utf8_general_ci"
als auch
Code:
?useUnicode=yes&characterEncoding=UTF-8
 
Hallo,

was für ein Zeichensatz ist den in der MySql-Datenbank eingestellt?
Wenn es ein anderer als UTF-8 ist, mußt du halt diesen für die Verbindung zu deiner DB mitgeben.

MfG
hansmueller
 
Latin1 steht in der [c]my.ini[/c]

und das habe ich auch versucht... Ergebnis die gleiche SCHEISSE 🙁

oder wo und wie kann ich sehen, was für ein Zeichensatz meine DB benutzt?

Habe auch versucht, in der o.g. und unten gezeigten Datei die Zeichensatz auf UTF-8 zu ändern, dann kann ich mein PW bei der MySQLCommandLine Client noch eingeben...und dann schmiert mir die CommandLine ab 🙁

ich bin echt am verzweifeln...

[XML]# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]

port=3306

[mysql]

default-character-set=latin1


# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306


#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"

#Path to the database root
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

# The default character set that will be used when a new schema or table is
# created and no character set is defined
character-set-server=latin1[/XML]
 
Zuletzt bearbeitet:
Hallo,

schau dir mal diesen Link an:MySQL :: MySQL 5.1 Referenzhandbuch :: 10.9 Zeichensätze und Sortierfolgen, die MySQL unterstützt

Ich habe mit MySql bisher nur sehr wenig zu tun gehabt, aber wenn ich es richtig verstehe ist
Code:
latin1
gleichzusetzen mit
Code:
cp1252
.
Vielleicht funktioniert ja
Code:
?characterEncoding=cp1252

Vielleicht hilft dir dieser Link weiter: jdbc mysql: encoding von utf-8 nach latin1

MfG
hansmueller
 
danke, das hatte ich leider auch schon versucht und kein Erfolg dabei.


Über jede Idee/Vorschlag oder auch sonst was...bin ich wirklich dankbar.

Mfg

EDIT:
ach...das haut auch nicht so hin 🙁
 
Zuletzt bearbeitet:
falls es noch jemanden interessieren sollte:

ich habe jetzt mein Eclipse unter Windows-Preferences-General-Workspace-Text file encoding- auf utf8 gesetzt, im Java-Code [c] System.setProperty("file.encoding", "utf8");[/c] das File-Encoding nochmal explizit gesetzt und dann beim DriverManager.getConnection(....?characterEncoding=utf8

so kann ich mein sql-dump zumindest korrekt ausgeben und dann auch in die db schreiben...irgendwie nicht richtig, aber es funktioniert.

Fallls doch noch jemand eine Idee hat...jederzeit und immer gerne gesehen!

MfG
 

Neue Themen


Zurück
Oben