IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Caractere chinois *.properties


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 36
    Par défaut Caractere chinois *.properties
    bonjour

    j'ai décidé aujourd'hui de reprendre un ancien projet, il s'agit d'une application swing (portefeuille électronique) que j'ai voulu afficher en chinois sauf que rien ne s'affiche en chinois enfin pas tout juste les dates (parce qu'il sont formaté par la machine j'imagine) à part ça, c'est à dire le title de la frame, les textes de bouton etc s'affiche en français.

    je ne vois pas d'où peut venir l'erreur.



    Voici mon fichier properties :
    MessagesBundle_cn.properties

    Citation Envoyé par MessagesBundle_cn.properties
    # Priorités
    not_important=不重要
    important=重要
    very_important=非常重要
    # Catégories par défaut
    clothes=衣服
    food=食物
    shopping=购物
    household=家庭
    general=各个
    personal=员工
    car=汽车
    travel=旅游
    honey=女朋友
    hobbies=爱好
    gifts=礼品
    games=游戏
    # Frame
    frame.title=应用
    frame.today=今天的交易
    frame.thisMonth=本月交易
    frame.btnToday.text=今天
    frame.thisYear=今年交易
    frame.history=历史的
    btnHistory.text=历史的
    # Dialog
    btnNewTransaction=新交易
    btnThisMonth.text=这个月
    btnThisYear.text=今年
    # AddTransactionDialog
    addTransaction.title=新交易
    addTransaction.txtLabel.label=说法
    addTransaction.txtValue.label=值
    addTransaction.cbCategory.label=类别
    addTransaction.cbPriority.label=优先
    addTransaction.btnSave.text=节省
    addTransaction.btnCancel.text=取消
    lignes dans lesquelles je spécifie la localisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Localization
    	public static final Locale LOCALE = Locale.CHINESE;
    	public static final String BUNDLE_FILENAME = "ma.fsac.lpdi.mymoney.MessagesBundle";
    classe qui appelle la ressource :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import java.util.ResourceBundle;
     
    public class MyMoneyBundle {
     
    	private static MyMoneyBundle instance;
    	private ResourceBundle messages;
     
    	/* Constructors */
    	private MyMoneyBundle() {
    		messages = ResourceBundle.getBundle(MyMoneyConfig.BUNDLE_FILENAME,
    				MyMoneyConfig.LOCALE);
    	}
     
    	public static MyMoneyBundle getInstance() {
    		if (instance == null)
    			instance = new MyMoneyBundle();
    		return instance;
    	}
     
    	public String getString(String key) {
    		return messages.getString(key);
    	}
    }
    et enfin la JFrame :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public MyMoneyFrame() {
    		super();
    		messages = MyMoneyBundle.getInstance();
    		setTitle(messages.getString("frame.title"));
    		initGUI();
    	}

    j'ai aussi changé dans window/preferences/general/content types/....

    j'ai mis l'encodage en : UTF-8 sans succès !!

    Vos suggestions seront les bienvenues

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par the_cha0s Voir le message
    j'ai mis l'encodage en : UTF-8 sans succès !!
    Les fichiers properties DOIVENT être en iso-latin1 par défaut !
    Si tu les mets en UTF-8 cela ne pourra pas marcher tel quel.


    Afin de pouvoir le lire en UTF-8, il faut soit le lire manuellement, soit utiliser la classe ResourceBundle.Control pour modifier les règles de chargement.

    Il doit y avoir un exemple sur le forum...


    a++

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Quant à la raison pour laquelle c'est le français qui s'affiche, le code du chinois c'est zh.

    CN c'est la Chine. Le chinois de Chine c'est zh_CN.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 36
    Par défaut Re :
    Citation Envoyé par thelvin Voir le message
    Quant à la raison pour laquelle c'est le français qui s'affiche, le code du chinois c'est zh.

    CN c'est la Chine. Le chinois de Chine c'est zh_CN.
    Avant de poster j'avais déjà essayé le "zh", le "zh_CN" n'a pas l'air de marcher non plus, je ne penses pas que ça vienne de là parce que quand j'efface les fichiers se trouvant dans le dossier "bin" et que je recompile il y a une erreur d’exécution.C'est comme si il 'était dans l'incapacité de charger le fichier *.properties en chinois

    Salut,

    Citation:
    Envoyé par the_cha0s Voir le message
    j'ai mis l'encodage en : UTF-8 sans succès !!
    Les fichiers properties DOIVENT être en iso-latin1 par défaut !
    Si tu les mets en UTF-8 cela ne pourra pas marcher tel quel.


    Afin de pouvoir le lire en UTF-8, il faut soit le lire manuellement, soit utiliser la classe ResourceBundle.Control pour modifier les règles de chargement.

    Il doit y avoir un exemple sur le forum...
    Je ne comprends pas ce que vous voulez dire par le lire manuellement, je peux l'ouvrir dans l'IDE et ça s'affiche correctement sinon pour la méthode Resource.control j'ai lu que ça faisait appel à getBundle

    donc je vois pas son utilité...

    en fait voila le msg d'erreur qui apparait :
    Erreur : impossible de trouver ou charger la classe principale ma.fsac.lpdi.mymoney.ui.MyMoneyFrame

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par the_cha0s Voir le message
    Avant de poster j'avais déjà essayé le "zh", le "zh_CN" n'a pas l'air de marcher non plus,
    Bah chez moi ça marche. Je prends les codes que tu nous as montrés, j'ajoute un fichier français, je les complète pour que ça fasse quelque chose de démarrable, je les mets au bon endroit dans des fichiers bien nommés, et ça marche : les textes sont pris du chinois, pas du français. (Par contre ils sont illisibles, à cause du soucis d'encodage présenté au-dessus.)

    Il va donc falloir nous faire l'inventaire des fichiers, leur nom, leur emplacement, leur contenu.

    Citation Envoyé par the_cha0s Voir le message
    je ne penses pas que ça vienne de là parce que quand j'efface les fichiers se trouvant dans le dossier "bin" et que je recompile il y a une erreur d’exécution.C'est comme si il 'était dans l'incapacité de charger le fichier *.properties en chinois
    ... C'est quoi le rapport ?

    Citation Envoyé par the_cha0s Voir le message
    en fait voila le msg d'erreur qui apparait :
    Erreur : impossible de trouver ou charger la classe principale ma.fsac.lpdi.mymoney.ui.MyMoneyFrame
    C'est une erreur qui n'a aucun rapport. On ne peut pas t'aider à la corriger si tu ne nous en dit pas plus.

    Citation Envoyé par the_cha0s Voir le message
    Je ne comprends pas ce que vous voulez dire par le lire manuellement, je peux l'ouvrir dans l'IDE et ça s'affiche correctement
    Sans doute parce que tu as forcé ton IDE à afficher ce fichier autrement qu'il devrait être affiché. Un .properties ne peut pas contenir de caractères chinois, un point c'est tout. Si un programme accepte de le faire, c'est parce qu'il n'est pas au courant de ce fait.

    Ton programme Java n'est pas au courant des ordres que tu as donné à ton IDE concernant l'affichage des .properties. Ton programme Java sait qu'un fichier .properties n'est pas en UTF-8, et ne va donc pas le lire en UTF-8.

    Edit :

    Citation Envoyé par the_cha0s Voir le message
    sinon pour la méthode Resource.control j'ai lu que ça faisait appel à getBundle

    donc je vois pas son utilité...
    Non, c'est getBundle() qui fait appel à elle. Son utilité c'est définir comment on charge le bundle, comme par exemple faire en sorte que le .properties soit lu en UTF-8 malgré le fait qu'un .properties ne puisse normalement pas être en UTF-8.
    Bon, personnellement, dans ces cas-là, je les appelle .utf8properties ou quelque chose de ce genre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par the_cha0s Voir le message
    Avant de poster j'avais déjà essayé le "zh", le "zh_CN" n'a pas l'air de marcher non plus, je ne penses pas que ça vienne de là parce que quand j'efface les fichiers se trouvant dans le dossier "bin" et que je recompile il y a une erreur d’exécution.C'est comme si il 'était dans l'incapacité de charger le fichier *.properties en chinois
    Sauf que Locale.CHINESE correspond à "zh".
    Donc si tu n'es pas cohérent entre le nom du fichier et le nom de la locale ca ne risque pas de marcher...

    Et du coup cela charge le fichier par défaut (locale du système hôte).


    Citation Envoyé par the_cha0s Voir le message
    Je ne comprends pas ce que vous voulez dire par le lire manuellement, je peux l'ouvrir dans l'IDE et ça s'affiche correctement sinon pour la méthode Resource.control j'ai lu que ça faisait appel à getBundle

    donc je vois pas son utilité...
    Les fichiers *.properties DOIVENT être en iso-latin-1 pour être lu correctement via ResourceBundle.

    Tu peux très bien les éditer dans n'importe quel autre encodage avec ton EDI ou un éditeur, mais dans ce cas cela ne marchera pas...


    Quand aux ResourceBundle.Control, il permet justement de modifier ces règles de chargement des fichiers properties (en les réécrivant)



    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher des caractères chinois
    Par tandor dans le forum Général Java
    Réponses: 8
    Dernier message: 01/01/2009, 20h58
  2. [DONNEES] caracteres chinois qui apparessent
    Par Frenchguy dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2007, 16h21
  3. Caractere chinois dans phpMyAdim/Mysql
    Par huynhi dans le forum Outils
    Réponses: 8
    Dernier message: 26/01/2007, 15h50
  4. [MFC] CRichEditText et caracteres chinois
    Par kinhelios dans le forum MFC
    Réponses: 7
    Dernier message: 25/01/2007, 14h25
  5. [Index Server] Recherche sur des caractères chinois
    Par d1g-2-d1g dans le forum Autres langages
    Réponses: 5
    Dernier message: 13/11/2006, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo