Announcement

Collapse
No announcement yet.

Tomcat Windows/Linux Encoding Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tomcat Windows/Linux Encoding Problem

    Hallo,

    ich habe unter Windows eine Tomcat-basierte Webanwendung entwickelt, die u.a. auf MySQL zugreift (MySQL auch Windows). Anschliessend wurde das Teil dann auf einen Tomcat auf Linux deployt und greift nun ebenfalls auf MySQL auf der Linux-Kiste zu. Unter Windows hatte ich keinerlei Probleme mit Umlauten, unter Linux funktioniert allerdings kein einziges SQL-Kommando mit Umlaut mehr:

    select * from de where name="Köln";

    funktioniert in MySQL-Client auf der Linux Maschine prima, nur wird dieser Query mit Umlaut anscheinend vom Tomcat aus nicht richtig an MySql weitergereicht. Drucke ich den Query nach catalina.out, ist alles prima, nur wie gesagt das Durchreichen an MySQL scheint nicht zu funktionieren. Ich habe die Vebindung so in context.xml konfiguriert (Username und Passwort ausge-Xt):

    <Resource name="jdbc/geonames" username="XXX" password="XXX"
    url="jdbc:mysql://localhost:3306/geonames?useEncoding=true&amp;characterEncoding=UT F-8"
    auth="Container" defaultAutoCommit="false"
    driverClassName="com.mysql.jdbc.Driver" maxActive="20"
    timeBetweenEvictionRunsMillis="60000"
    type="javax.sql.DataSource" />

    Hat jemand eine Idee woran das liegen könnte?

    Dankeschön im Voraus!

  • #2
    Ich hab mal das MySQL-Logging eingeschaltet. Tatsächlich kommt der Query da völlig kaputt an. Ich gehe mal davon aus, dass der String in Java noch OK ist, aber in MySQL kommt dann der Umlaut nicht mehr an:


    select name, latitude, longitude from de where name='Köln' and featurecode like 'PPL%'

    Comment


    • #3
      Schon mal das ausprobiert? http://stackoverflow.com/questions/1...n-java-webapps
      Christian

      Comment


      • #4
        Originally posted by Christian Marquardt View Post
        Hallo Christian,

        ja, die Seite hab ich auch per Google gefunden und das alles ausprobiert - hat nix geholfen .... ich hab mal weiter gesucht und gefunden dass in Windows einige Variablen von MySQL standardmässig anders gesetzt sind als in Linux:

        Code:
        SHOW VARIABLES LIKE "character%";
        +--------------------------+----------------------------+
        | Variable_name            | Value                      |
        +--------------------------+----------------------------+
        | character_set_client     | latin1                     |
        | character_set_connection | latin1                     |
        | character_set_database   | latin1                     |
        | character_set_filesystem | binary                     |
        | character_set_results    | latin1                     |
        | character_set_server     | latin1                     |
        | character_set_system     | utf8                       |
        | character_sets_dir       | /usr/share/mysql/charsets/ |
        +--------------------------+----------------------------+
        Und in Windows siehts so aus:

        Code:
        character_set_client	utf8
        character_set_connection	utf8
        character_set_database	utf8
        character_set_filesystem	binary
        character_set_results	utf8
        character_set_server	utf8
        character_set_system	utf8
        Aber ich habs nicht geschafft, die Variablen anders zu setzen?? Ein Umkodierung des Query-Strings in Java hat übrigens auch nix gebracht ...

        Comment


        • #5
          Habe das mal hier reingesetzt: http://entwickler-forum.de/showthrea...r-Linux-setzen
          Christian

          Comment

          Working...
          X