UNICODE : trouver une solution
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour,
Je lance officiellement un projet pour trouver une solution à la gestion de l'unicode dans HyperFile.

J'ai pas les tenants et aboutissants mais toutes les expériences en la matières sont vivement invitées à se manifester d'une réponse dans ce sujet. Evidement il est recommander de s'incrire.

ps : il est évident la solution de ce projet sera tenue publique. Nous pourrions inaugurer la forge pour sa réalisation.

N'étant pas compétent en la matière, j'ai besoins d'un chef de projet aussi compétent que sérieux.

Contribution le : 14/10/2005 11:31
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Animateur WDF
Inscrit:
05/06/2003 14:23
De Québec
Post(s): 511
Salut,

Une idee comme ca en passant.

Dans le fichier hyperfile on a un champ de type texte (enfin moi je suis en windev 8 et j'ai pas vu de type unicode au niveau de l'analyse).

Mais bon supposons que c'est un champ texte, on peut creer une classe ou une procedure de conversion ayant comme parametre le type de conversion (T pour Texte, U pour Unicode) ,champ texte a convertir, l'alphabet souhaite et en retour on a un champ de type texte pour la conversion en texte ou un unicode si conversion en unicode.

et pourquoi pas memoriser dans le fichier hyperfile l'alphabet qui a ete utilise pour la conversion.

et donc par programmation dans la procedure radaffiche faire appel a cette fonction.

c'est juste une idee comme ca a la volee. c'est a creuser ou voir meme ameliorer.

a+++

Contribution le : 14/10/2005 15:39
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Stagiaire WDF
Inscrit:
14/10/2005 19:33
Post(s): 13
Le problème de l'UNICODE n'est pas simplement un problème d'affichage au niveau de WinDev.
L'unicode est codé sur 2 octets, l'ansi sur 1 octet. Apparemment, les opérations sur chaine dans windev, travaillent sur 1 octet.
Si on veut afficher par exemple du français et du chinois, on est obligé de coder en 2 octets.
En unicode, il n'y a pas d'alphabet d'origine, les 2 octets peuvent coder tous les alphabets de la planete sans changer de code page.
Dans ses chaines de caractère, windev ne sais pas travailler sur 2 octets. Même avec les fonctions ChangeAlphabet, les fonctions de recherche qui sont basées sur l'octet ne fonctionnent pas correctement.
Par exemple: si on passe en alphabet chinois simplifié (code GB), les idéogrammes sont alors codés sur 2 octets, les caractères latins sur 1 octet.
Supposons que l'on aie une chaine de deux caractères chinois, soit par exemple en hexa: A3B67EF4 et que l'on cherche par la fonction "contient" par requête ou tri, le caractère 3B67 ou B67E ou 67EF et bien Windev dira que la chaine initiale contient ces caractères alors que c'est faux.
Toute la gestion des chaines de caractère de plus d'un octet est à revoir et a forciori celle de l'unicode.
La gestion de l'unicode n'est pas un problème anodin.
La Chine vient de réaliser un standard, le GB18030 qui correspond par une table code à code au standard unicode, et leur intention est de ne pas autoriser à terme sur leur territoire les logiciels non conforme à ce standard. Le marché chinois, ce n'est pas rien.
Mais le reste du monde fait de même, l'unicode va être le standard du codage des chaines de caractère.
Unicode est le codage sur WindowsCE, je n'ai pas encore testé comment se comporte Windev Mobile émulé sur WindowsXP.
Je ne suis pas chinois, mais travaille avec des chinois et ce problème je pense est à nos portes. Tous les logiciels pouvant afficher du chinois sur lesquels j'ai travaillé gère correctement l'unicode, même le bloc note de windows le fait !

Contribution le : 14/10/2005 20:13
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Animateur WDF
Inscrit:
05/06/2003 14:23
De Québec
Post(s): 511
Ah ok autant pour moi je connaissais pas cette subtilité disons que je travaille peu avec unicode donc forcement...

a+++

Contribution le : 14/10/2005 20:50
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Stagiaire WDF
Inscrit:
14/10/2005 19:33
Post(s): 13
Pas de problème.

C'est vrai que tant que l'on reste dans les alphabets français et anglais, on ne voit vraiment l'intéret de l'unicode.
Mais quand on passe à l'international et particulièrement, si on veut gérer différents alphabets simultanément, cela devient un casse tête (chinois).
Mais il n'y a pas que la Chine, il ya aussi l'alphabet arabe, russe, sanskri, japonais, tibetain etc...

Pour en revenir au codage UNICODE:
Il y a deux manière de coder l'unicode (ou norme ISO 10646) (pour faire simple):

UTF16 (LE) Little-endian, utilisé par quelques logiciels sous Windows (ce n'est pas la norme internationale), et c'est celui utilisé par WinDev où le 00 est ajouté après le code Ansi pour les 16 bits nécessaires.
UTF16 (BE) Big-endian, qui est la norme internationale, utilisé notament par Java, où le 00 est ajouté avant le code Ansi pour les 16 bits nécessaires.
Quand on voit dans les tables: U+5C71 qui est un caractère chinois ou U+0082 pour indiquer le "é", il s'agit UTF16 (BE).

l'UTF8 qui est un codage à nombre d'octets variables (1 à 4), restant compatible à la norme Ascii pour les caractère à un octet.

A+

Contribution le : 15/10/2005 12:31
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Animateur WDF
Inscrit:
29/07/2002 12:31
De 59000, Lille
Post(s): 239
OK, vu que l'on peut avancer et que tu à l'air de t'y connaitre un peu. Peux-tu me donner :
- un projet type (avec certainement un fichier dans l'aalyse et une fenetre)
- ce que tu constates
- ce que tu veux avec un exemple concret ou la cinématique désirée.
- J'ai bien mes toolboxs sous la main, reste à savoir comment les commander (en fonction de ce que tu veux)

elecoest _arobase_ netcourier _point_ com

Contribution le : 15/10/2005 15:41
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Anonyme
Salut,
je ne peux pas fournir de projet avec un fichier ayant une rubrique unicode puisque hyperfile ne gère pas l'unicode.
Ce qui possible de faire, c'est de mettre de l'unicode dans des rubrique Buffer dans lesquels on a placé de l'unicode. Mais dans ce cas, la seule chose faisable avec, c'est de l'affichage (les champs RTF peuvent cela), mais c'est tout, pas de recherche, pas de filtre, de tri, rien !
C'est toute la problématique de ce module.

Par contre ce que je peux envoyer et c'est un problème annexe dont j'ai parlé au début du module, c'est un petit projet montrant que la gestion des alphabets avec "ChangeAlphabet" dans hyperfile n'est pas correcte quand certains caractères de cet alphabet sont codés sur deux octet comme dans format GB2312 (chinois simplifié) par exemple.
Mais régler ce problème limitera les dégats c'est sur, pour la gestion de ces langues, mais ne règlera pas le problème de l'unicode, où on peut afficher toutes les langues à la fois.

Contribution le : 15/10/2005 17:32
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Animateur WDF
Inscrit:
29/07/2002 12:31
De 59000, Lille
Post(s): 239
Pas de problème, envoie moi çà ^^

pour ce qui concerne les fonctions de filtre et recherche, on peut (je pense) encapsuler les fonctions HF avec une recherche d'un texte unicode dans un autre en passant par l'ansi sauf si tu me dis que

ansi("UNICODE : trouver une solution") ne contient pas ANSI("trouver")

mais avec un projet exemple (en 8 stp j'ai pas la 9) serait bien.

Contribution le : 15/10/2005 18:42
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Anonyme
Ok, je t'envoie ça, le temps que je reinstalle Windev8 sur une machine et que je fasse un petit projet dans cette version.
Les caractères Ansi codés en unicode ont le même codage si ce n'est que 00 est ajouté (avant ou après) selon le type d'unicode.
Le problème, c'est que l'unicode code l'ansi mais aussi tout ce qui existe comme alphabet. Donc un texte peut contenir de l'ansi, du grec, du chinois... tout cela en même temps. La fonction serait plutot:
Ansi_et/ou_alphabetx1_et/ou....alphabetxx(unicode) en sachant que ces alphabets seraient différents selon la portion du texte et que de toute façon, windev ne peut afficher qu'un seul alphabet à la fois dans un champ!!
A+

Contribution le : 15/10/2005 19:58
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Stagiaire WDF
Inscrit:
14/10/2005 19:33
Post(s): 13
J'ai fait un essai avec WindevMobile mobile 9, le même problème persiste en émulation sur le PC (pas essayé sur le pocket).
Un lien intéressant pour Manu et les autres:
http://www.yunqa.de/delphi/unicode/index.htm
Il s'agit d'utilitaires pour travailler avec l'UNICODE sous Delphi (en OpenSource ou freeware je crois)
Il y a aussi un utilitaire pour visualiser les bases SQLite.
A noter que SQLite (http://www.sqlite.org/) fonctionne de manière native en UNICODE et permet des bases "stand alone" sans serveur.
A voir aussi http://www.sqlmanagerx.com/ qui propose un accès natif SQLite pour Windev.
A tester aussi: Windev et Access ...

A+

Chan

Contribution le : 22/10/2005 17:23
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Animateur WDF
Inscrit:
29/07/2002 12:31
De 59000, Lille
Post(s): 239
Attend Chan je ne te suis plus :(

Que veux tu exactement ?
faire fonctionner unicode avec WinDev ?

Concernant le projet que tu m'as envoyé (il serait interessant de l'envoyer aussi au ST car c'est très révélateur), je peux constater quelques petites choses :
- Il ne faut pas confondre gestion unicode et alphabet
- La gestion de l'alphabet a une portée globale : si tu le déclare dans le code de ta fenetre tout ce qui est dedans sera interpreté dans cet alphabet (tu sais le pb des accents)
- Dans ton code de recherche tu utilises ~=. ~= signifie environ égal sur la sonorité donc c'est "normal" que celà renvoie 2 lignes. Pour t'en assurer maets ton en alphabet français.

Maintenant mes constats mais est-ce vrai ?
- utiliser un alphabet spécifique implique une interprétation de tout les libellés & cie dans cet alphabet.
- La gestion unicode permet de se prémunir de celà => quelles est pour WinDev la différence entre ces deux points



Contribution le : 22/10/2005 17:57
Créer un fichier PDF de la contribution Imprimer


Re: UNICODE : trouver une solution
Stagiaire WDF
Inscrit:
14/10/2005 19:33
Post(s): 13
En fait, il y a deux problèmes:
1/ la gestion des alphabets de deux octets comme le chinois par Windev.
Dans ma requête, j'utilise ~] c'est à dire "contient sans tenir compte de la casse", ce qui gènère beaucoup d'erreurs (j'ai un dico de 30000 termes que j'ai mis en hyperfile).
Mais si je transforme celle ci en "]" c'est à dire "contient strict", il y a encore des erreurs où windev affiche des mots où le caractère est totalement absent.
Par exemple, une recherche sur le caractère: U+516b indique comme résultât: U+90aa U+6c43 et U+91ce U+849c alors qu'aucun de ces deux mots ne contient le caractère recherché, mais ce qui est logique si on regarde le code GB de ces caractères: b0cb pour le premier et d0b0 cbae puis d2b0 cbe2 pour les deux derniers mots.
Un outils intéressant pour afficher et travailler avec le chinois peut être téléchargé à http://www.wenlin.com/. (il affiche tous les codes)
Donc, comme Hyperfile ne gère pas UNICODE, j'aurais aimé qu'il gère correctement les alphabets comme le chinois et ce n'est même pas le cas, certains résultâts de requète étant faux!
2/ Ceci étant, l'idéal serait de pouvoir travailler complètement en UNICODE.
Pour voir si un système gère l'affichage de l'unicode, on peut par exemple dans un texte, essayer d'afficher un caractère chinois et un "ç" ou "î" ou "à".
Dans windev, les seuls champs qui font cela, sont à ma connaissance, les champs RTF en statique ou dans hyperfile dans les mémo, mais alors, impossibilité de recherche tri, requête etc.

Essai avec Access: En important une base Access (format natif d'Access: UNICODE), WinDev demande (même si on décide de ne pas migrer en Hyperfile mais de rester en Access) quelle langue on veut utiliser (je suppose donc qu'il y a une opération UnicodeVersTexte interne quand on veut lire et réciproquement TexteVersUnicode quand on veut écrire dans la base)
En tout cas, au niveau de Windev, on ne reste que dans un seul alphabet spécifique. J'avais placé dans ma base, des caractères chinois et d'autres comme "ç" et "à". Selon l'alphabet choisi, je n'ai pu afficher correctement que les uns ou les autres, mais pas les deux ensemble.

Pour la requête au service technique de PCSoft, cela a déja été fait l'année dernière sans réponse. Mais je vais récidiver cette année. Peut être sont ils en train de travailler sur ce problème.

A+

Chan

Contribution le : 22/10/2005 20:56
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2