2010-10-24 7 views
1

En exportant un ensemble de données pour exceller dans Java, les données ont certains caractères non ascii, tandis que l'exportation dans Windows machine les données arrivent correctement au format codé UTF-8.Mais quand je déployer mon code dans une machine Unix, cela ne fonctionne pas correctement. L'encodageUTF-8 ne fonctionne pas correctement. J'utilise le serveur Tomcat 5.5. J'ai également inclus le paramètre URIencoding = "UTF_8" dans server.xml. Mais encore dans la machine unix, il ne fonctionne pas correctementProblème de codage UTF-8 dans la machine Unix

+1

Ne fonctionne pas correctement, comment? –

+0

Ouais, s'il vous plaît montrer quelques exemples de données et nous dire ce qui se passe exactement. –

+0

from Base de données im exporter un ensemble de données dans un fichier csv en utilisant java. Dans Windows, les données exportées arrivent correctement en encodage UTF-8. Les caractères anormaux ne viennent pas dans windows.but quand je le déploie dans une machine Unix et que j'exporte mes données dans un fichier csv, des caractères anormaux arrivent, c'est à dire venir au format UTF-8. Im utilisant le serveur Tomcat. – senthil

Répondre

1

Exécution Tomcat avec une option

-Dfile.encoding=UTF8 

forcera la machine virtuelle à adopter UTF8 comme il est l'encodage par défaut quel que soit votre environnement. Je suppose que c'est votre problème (et c'est quand même une bonne pratique)

+0

J'ai essayé l'option -Dfile.encoding = UTF8 dans CATALINA_OPTS dans le script shell start tomcat. Mais ça ne marche toujours pas. S'il vous plaît aidez-moi dans ce domaine. – senthil

+0

Cela se passe bien dans l'interface utilisateur mais lorsque j'exporte les données uniquement, il ne vient pas au format UTF sous UNIX. Aidez-moi, s'il vous plaît – senthil

0

Lorsque vous travaillez avec des données UTF-8, cela peut être très fragile. Chaque étape de la chaîne doit spécifier utf8.

(1) Dans la base de données, assurez-vous que la table dispose d'un codage et d'un classement UTF8. "show table status" vous le dira. Google pour "mysql alter table utf8" pour plus d'informations.

(2) La connexion JDBC doit spécifier le codage UTF8. ce sera quelque chose de similaire à connecteur pour/J:

useUnicode=true&characterEncoding=UTF-8 

(3) Chaque flux de lecture/écriture, chaque chaîne à la conversion d'octets dans le code doit spécifier UTF-8 comme encodage. Il est facile de manquer un. Si ce n'est pas le cas, Java utilisera la valeur par défaut du système, qui variera d'un serveur à l'autre.

(4) Non applicable ici, mais pour les données soumises par l'utilisateur à partir d'un formulaire, vous devez définir le codage des caractères de la demande. (Je le fais dans un filtre de servlet)

request.setCharacterEncoding("UTF-8"); 

(5) Probablement pas applicable ici, mais si vous la sortie HTML/XML/texte de votre servlet, définissez le caractère en-tête HTTP de codage. (Cela peut s'appliquer si vous générez le fichier Excel en tant que fichier XML).

response.setContentType("text/html; charset=UTF-8");