pour une application C# Pocket PC a traduire en japonais je développe un
site intranet ASP.Net , et il faut que je fasse la chose suivante (mon post
précendant est erroné) :
le traducteur va traduire les messages francais de l'appli en japonais.
il va donc ecrire des ideogrammes dans des textBox
- il faut que je puisse convertir tous les ideogrammes en leur equivalence
unicode (quelque chose comme "#<code>") pour inserer les messages tout en
unicodes dans une base SQL
- il faut que lors du remplissage d'une textBox (depuis base SQL) de mon
appli, la page interprete le code unicode, de telle sorte a voir apparaitre
un ideogramme dans la textBox et non pas "#<code>"
une classe existe telle dans le Framework .Net pour faire ca ?
Ya equivalence de cette fonction en VB.net ? je voudrais faire une fonction qui retourne l'entier de chaque ideogramme de mon message
"Zim" <"r[omuald].szymanskiANTI"@SPAM.laposte.net> a écrit dans le message de news: %
Elderion a écrit :
merci excellant avec le N ca marche super
cependant connaissez vouss une fonction SQL qui permette dans l'INSERT d'enregistrer non pas l'ideogramme mais le code unicode associé
genre: INSERT INTO MATABLE VALUES ('testunicode', 'french', convertir_en_unicode (N'?'), '04/04/2005','04/05/2005')
comme ca dans mon champs il n'y aurait pas ? mais le code unicode correspondant
ca me sera utile plus tard.
"Zim" <"r[omuald].szymanskiANTI"@SPAM.laposte.net> a écrit dans le message de news: %
D'autre part, si vous faites des insertions manuellement, n'oubliez pas le préfixe Unicode N avant toute chaine de caractères :
INSERT maTable VALUES(N'ideogrammes');
Effectivement, il existe une fonction T-SQL qui s'appelle ... Unicode() SELECT Unicode(N'ideogramme') renvoie un entier correspondant au code.
Elderion
merci pour ces précisions ok donc en fait la base SQL stocke toujours la valeur unicode et me montre, via Entreprise manager ou page web, l'apparence de l'ideogramme en utilisant la police par defaut associée celui ci, que connait SQL Server
Donc si je vois que des ???? c'est donc que d'une maniere ou d'une autre SQL Server ne trouve pas de fonte permettant d'afficher le code unicode.
en mettant des 'N' dans ma requete ca marche nickel. si je met pas de N ca signifie qu'il enregistre une valeur brute correspondante a mon ideogramme, valeu qui ne correspond a pas a la table Unicode, et donc pour me la montrer il trouve pas la fonte qui convient.
c ca ?
a écrit dans le message de news:
Elderion wrote:
merci excellant avec le N ca marche super
cependant connaissez vouss une fonction SQL qui permette dans l'INSERT d'enregistrer non pas l'ideogramme mais le code unicode associé
Mais *c'est* le code associé qui est enregistré! En interne, n'importe quelle chaîne (Unicode ou non) est toujours stockée comme une suite de valeurs numériques ("code points" dans la charabia Unicode). Tu ne t'imagines quand même pas que ta base de données stocke une copie de la bitmap de chaque idéogramme!
L'idéogramme, il n'est utilisé que pour le rendu à l'écran du charactère, et comme on te l'a déjà dit, çà c'est une question de police de caractères, c'est tout! Si tu vois des "???", c'est que tu essaies d'afficher des idéogrammes avec une police qui n'a pas les images correspondantes à ces code points (où alors que tu te plantes sur l'encoding des caractères, mais c'est peu probable si tu ne travailles que sous Windows - dans ce càs l'encoding sera toujours UCS2).
Arnaud MVP - VC
merci pour ces précisions
ok donc en fait la base SQL stocke toujours la valeur unicode
et me montre, via Entreprise manager ou page web, l'apparence de
l'ideogramme en utilisant la police par defaut associée celui ci, que
connait SQL Server
Donc si je vois que des ???? c'est donc que d'une maniere ou d'une autre SQL
Server ne trouve pas de fonte permettant d'afficher le code unicode.
en mettant des 'N' dans ma requete ca marche nickel. si je met pas de N ca
signifie qu'il enregistre une valeur brute correspondante a mon ideogramme,
valeu qui ne correspond a pas a la table Unicode, et donc pour me la montrer
il trouve pas la fonte qui convient.
c ca ?
<adebaene@club-internet.fr> a écrit dans le message de news:
1128518488.384809.199030@g47g2000cwa.googlegroups.com...
Elderion wrote:
merci excellant
avec le N ca marche super
cependant connaissez vouss une fonction SQL qui permette dans l'INSERT
d'enregistrer non pas l'ideogramme mais le code unicode associé
Mais *c'est* le code associé qui est enregistré! En interne,
n'importe quelle chaîne (Unicode ou non) est toujours stockée comme
une suite de valeurs numériques ("code points" dans la charabia
Unicode). Tu ne t'imagines quand même pas que ta base de données
stocke une copie de la bitmap de chaque idéogramme!
L'idéogramme, il n'est utilisé que pour le rendu à l'écran du
charactère, et comme on te l'a déjà dit, çà c'est une question de
police de caractères, c'est tout!
Si tu vois des "???", c'est que tu essaies d'afficher des idéogrammes
avec une police qui n'a pas les images correspondantes à ces code
points (où alors que tu te plantes sur l'encoding des caractères,
mais c'est peu probable si tu ne travailles que sous Windows - dans ce
càs l'encoding sera toujours UCS2).
merci pour ces précisions ok donc en fait la base SQL stocke toujours la valeur unicode et me montre, via Entreprise manager ou page web, l'apparence de l'ideogramme en utilisant la police par defaut associée celui ci, que connait SQL Server
Donc si je vois que des ???? c'est donc que d'une maniere ou d'une autre SQL Server ne trouve pas de fonte permettant d'afficher le code unicode.
en mettant des 'N' dans ma requete ca marche nickel. si je met pas de N ca signifie qu'il enregistre une valeur brute correspondante a mon ideogramme, valeu qui ne correspond a pas a la table Unicode, et donc pour me la montrer il trouve pas la fonte qui convient.
c ca ?
a écrit dans le message de news:
Elderion wrote:
merci excellant avec le N ca marche super
cependant connaissez vouss une fonction SQL qui permette dans l'INSERT d'enregistrer non pas l'ideogramme mais le code unicode associé
Mais *c'est* le code associé qui est enregistré! En interne, n'importe quelle chaîne (Unicode ou non) est toujours stockée comme une suite de valeurs numériques ("code points" dans la charabia Unicode). Tu ne t'imagines quand même pas que ta base de données stocke une copie de la bitmap de chaque idéogramme!
L'idéogramme, il n'est utilisé que pour le rendu à l'écran du charactère, et comme on te l'a déjà dit, çà c'est une question de police de caractères, c'est tout! Si tu vois des "???", c'est que tu essaies d'afficher des idéogrammes avec une police qui n'a pas les images correspondantes à ces code points (où alors que tu te plantes sur l'encoding des caractères, mais c'est peu probable si tu ne travailles que sous Windows - dans ce càs l'encoding sera toujours UCS2).
Arnaud MVP - VC
Elderion
ce qu'il me faudrait ca serait une fonction similaire qui puisse traduire un message entier (messages d'ideos -> entier | message d'entiers -> ideos)
Si ca existe pas, avoir l'equivalent de ces 2 fonctions T-SQL en ASP.net pour les integrer a une boucle utilisant substring().
Merci
"Zim" <"r[omuald].szymanskiANTI"@SPAM.laposte.net> a écrit dans le message de news:
Décidemment, je ne sais pas tout mettre en un seul mail. La fonction inverse est NChar(code) où code est l'entier correpondant à l'idéogramme.
ce qu'il me faudrait ca serait une fonction similaire
qui puisse traduire un message entier (messages d'ideos -> entier | message
d'entiers -> ideos)
Si ca existe pas, avoir l'equivalent de ces 2 fonctions T-SQL en ASP.net
pour les integrer a une boucle utilisant substring().
Merci
"Zim" <"r[omuald].szymanskiANTI"@SPAM.laposte.net> a écrit dans le message
de news: euKkv8ayFHA.916@TK2MSFTNGP10.phx.gbl...
Décidemment, je ne sais pas tout mettre en un seul mail.
La fonction inverse est NChar(code) où code est l'entier correpondant à
l'idéogramme.
ce qu'il me faudrait ca serait une fonction similaire qui puisse traduire un message entier (messages d'ideos -> entier | message d'entiers -> ideos)
Si ca existe pas, avoir l'equivalent de ces 2 fonctions T-SQL en ASP.net pour les integrer a une boucle utilisant substring().
Merci
"Zim" <"r[omuald].szymanskiANTI"@SPAM.laposte.net> a écrit dans le message de news:
Décidemment, je ne sais pas tout mettre en un seul mail. La fonction inverse est NChar(code) où code est l'entier correpondant à l'idéogramme.
adebaene
Elderion wrote:
merci pour ces précisions ok donc en fait la base SQL stocke toujours la valeur unicode et me montre, via Entreprise manager ou page web, l'apparence de l'ideogramme en utilisant la police par defaut associée celui ci, que connait SQL Server
Ce n'est pas lié à SQL Server, plutôt à Enterprise Manager (où le client que tu veux bien utiliser pour l'affichage). Je n'ai pas de base avec des données Unicode sous la main pour tester, mais Option -> Police dans Enterprise Manager permet peut-être de régler le problème.
Donc si je vois que des ???? c'est donc que d'une maniere ou d'une autre SQL Server ne trouve pas de fonte permettant d'afficher le code unicode.
Le *client* ne trouve pas de font. SQL Server lui-même ne s'occupe pas d'affichage.
en mettant des 'N' dans ma requete ca marche nickel. si je met pas de N ca signifie qu'il enregistre une valeur brute correspondante a mon ideogramm e, valeu qui ne correspond a pas a la table Unicode, et donc pour me la mont rer il trouve pas la fonte qui convient.
c ca ?
Non : Si tu ne mets pas de N, la chaîne est enregistrée dans la base en ANSI, c'est à dire avec 8 bits par caractères, ce qui n'autorise à stocker que les caractères définis dans ton "codeset" (probablement 1252 "Latin 1"), ce qui exclut le japonais d'office. Il faut bien voir qu'une chaine stockée sur 8 bits par un système avec un codeset donné et relue par un système avec un autre codeset ne va pas être relue correctement.
C'est tout l'intérêt d'Unicode, de définir un standard de représentation numérique des différents caractères ("code points"). Ce qu'Unicode ne définit pas, c'est comment ces valeurs numériques sont stockées en binaire, d'où les différents encoding UTF8, UCS2, etc...
Quand tu préfixes tes chaines avec N, SQL Server stocke les chaines sur 2 octets par caractères, en UCS2 (l'encoding standard de Windows).
Pour une excellente introduction sur le sujet (le minimum à savoir si tu veux faire une appli internationale AMHA), voire http://www.joelonsoftware.com/articles/Unicode.html
Arnaud MVP - VC
Elderion wrote:
merci pour ces précisions
ok donc en fait la base SQL stocke toujours la valeur unicode
et me montre, via Entreprise manager ou page web, l'apparence de
l'ideogramme en utilisant la police par defaut associée celui ci, que
connait SQL Server
Ce n'est pas lié à SQL Server, plutôt à Enterprise Manager (où le
client que tu veux bien utiliser pour l'affichage).
Je n'ai pas de base avec des données Unicode sous la main pour tester,
mais Option -> Police dans Enterprise Manager permet peut-être de
régler le problème.
Donc si je vois que des ???? c'est donc que d'une maniere ou d'une autre SQL
Server ne trouve pas de fonte permettant d'afficher le code unicode.
Le *client* ne trouve pas de font. SQL Server lui-même ne s'occupe pas
d'affichage.
en mettant des 'N' dans ma requete ca marche nickel. si je met pas de N ca
signifie qu'il enregistre une valeur brute correspondante a mon ideogramm e,
valeu qui ne correspond a pas a la table Unicode, et donc pour me la mont rer
il trouve pas la fonte qui convient.
c ca ?
Non : Si tu ne mets pas de N, la chaîne est enregistrée dans la base
en ANSI, c'est à dire avec 8 bits par caractères, ce qui n'autorise
à stocker que les caractères définis dans ton "codeset"
(probablement 1252 "Latin 1"), ce qui exclut le japonais d'office. Il
faut bien voir qu'une chaine stockée sur 8 bits par un système avec
un codeset donné et relue par un système avec un autre codeset ne va
pas être relue correctement.
C'est tout l'intérêt d'Unicode, de définir un standard de
représentation numérique des différents caractères ("code points").
Ce qu'Unicode ne définit pas, c'est comment ces valeurs numériques
sont stockées en binaire, d'où les différents encoding UTF8, UCS2,
etc...
Quand tu préfixes tes chaines avec N, SQL Server stocke les chaines
sur 2 octets par caractères, en UCS2 (l'encoding standard de Windows).
Pour une excellente introduction sur le sujet (le minimum à savoir si
tu veux faire une appli internationale AMHA), voire
http://www.joelonsoftware.com/articles/Unicode.html
merci pour ces précisions ok donc en fait la base SQL stocke toujours la valeur unicode et me montre, via Entreprise manager ou page web, l'apparence de l'ideogramme en utilisant la police par defaut associée celui ci, que connait SQL Server
Ce n'est pas lié à SQL Server, plutôt à Enterprise Manager (où le client que tu veux bien utiliser pour l'affichage). Je n'ai pas de base avec des données Unicode sous la main pour tester, mais Option -> Police dans Enterprise Manager permet peut-être de régler le problème.
Donc si je vois que des ???? c'est donc que d'une maniere ou d'une autre SQL Server ne trouve pas de fonte permettant d'afficher le code unicode.
Le *client* ne trouve pas de font. SQL Server lui-même ne s'occupe pas d'affichage.
en mettant des 'N' dans ma requete ca marche nickel. si je met pas de N ca signifie qu'il enregistre une valeur brute correspondante a mon ideogramm e, valeu qui ne correspond a pas a la table Unicode, et donc pour me la mont rer il trouve pas la fonte qui convient.
c ca ?
Non : Si tu ne mets pas de N, la chaîne est enregistrée dans la base en ANSI, c'est à dire avec 8 bits par caractères, ce qui n'autorise à stocker que les caractères définis dans ton "codeset" (probablement 1252 "Latin 1"), ce qui exclut le japonais d'office. Il faut bien voir qu'une chaine stockée sur 8 bits par un système avec un codeset donné et relue par un système avec un autre codeset ne va pas être relue correctement.
C'est tout l'intérêt d'Unicode, de définir un standard de représentation numérique des différents caractères ("code points"). Ce qu'Unicode ne définit pas, c'est comment ces valeurs numériques sont stockées en binaire, d'où les différents encoding UTF8, UCS2, etc...
Quand tu préfixes tes chaines avec N, SQL Server stocke les chaines sur 2 octets par caractères, en UCS2 (l'encoding standard de Windows).
Pour une excellente introduction sur le sujet (le minimum à savoir si tu veux faire une appli internationale AMHA), voire http://www.joelonsoftware.com/articles/Unicode.html
Arnaud MVP - VC
Zim
> ce qu'il me faudrait ca serait une fonction similaire qui puisse traduire un message entier (messages d'ideos -> entier | message d'entiers -> ideos)
Si ca existe pas, avoir l'equivalent de ces 2 fonctions T-SQL en ASP.net pour les integrer a une boucle utilisant substring().
Merci
Vous avez tout dit ... Il suffit de boucler sur chaque caractère de votre message (avec Substring) et de transformer.
> ce qu'il me faudrait ca serait une fonction similaire
qui puisse traduire un message entier (messages d'ideos -> entier | message
d'entiers -> ideos)
Si ca existe pas, avoir l'equivalent de ces 2 fonctions T-SQL en ASP.net
pour les integrer a une boucle utilisant substring().
Merci
Vous avez tout dit ...
Il suffit de boucler sur chaque caractère de votre message (avec
Substring) et de transformer.
> ce qu'il me faudrait ca serait une fonction similaire qui puisse traduire un message entier (messages d'ideos -> entier | message d'entiers -> ideos)
Si ca existe pas, avoir l'equivalent de ces 2 fonctions T-SQL en ASP.net pour les integrer a une boucle utilisant substring().
Merci
Vous avez tout dit ... Il suffit de boucler sur chaque caractère de votre message (avec Substring) et de transformer.
Zim
Elderion a écrit :
Super merci
Ya equivalence de cette fonction en VB.net ? je voudrais faire une fonction qui retourne l'entier de chaque ideogramme de mon message
Il n'y pas d'équivalent "direct" en .NET. Pour obtenir ce chiffre, il faut récupérer un tableau de bytes à partir de votre chaine de caractères (cf. les fonctions d'encodage). Utilisez l'encodage BigEndianUnicode qui code chaque caractère sur deux octets. Afin d'obtenir la valeur de chaque caractère, il suffit de lire le tableau de bytes 2 octets par 2 octets et d'en faire l'addition (en n'oubliant pas de multiplier l'octet de poids fort).
A vous de jouer !
Elderion a écrit :
Super merci
Ya equivalence de cette fonction en VB.net ?
je voudrais faire une fonction qui retourne l'entier de chaque ideogramme de
mon message
Il n'y pas d'équivalent "direct" en .NET.
Pour obtenir ce chiffre, il faut récupérer un tableau de bytes à partir
de votre chaine de caractères (cf. les fonctions d'encodage).
Utilisez l'encodage BigEndianUnicode qui code chaque caractère sur deux
octets.
Afin d'obtenir la valeur de chaque caractère, il suffit de lire le
tableau de bytes 2 octets par 2 octets et d'en faire l'addition (en
n'oubliant pas de multiplier l'octet de poids fort).
Ya equivalence de cette fonction en VB.net ? je voudrais faire une fonction qui retourne l'entier de chaque ideogramme de mon message
Il n'y pas d'équivalent "direct" en .NET. Pour obtenir ce chiffre, il faut récupérer un tableau de bytes à partir de votre chaine de caractères (cf. les fonctions d'encodage). Utilisez l'encodage BigEndianUnicode qui code chaque caractère sur deux octets. Afin d'obtenir la valeur de chaque caractère, il suffit de lire le tableau de bytes 2 octets par 2 octets et d'en faire l'addition (en n'oubliant pas de multiplier l'octet de poids fort).
A vous de jouer !
Elderion
oui mais la boucle il faut que je la fasse en VB.net c a cet effet qu'il me faudrait l'equivalent des fonctions SQL NChar() et Unicode() --> en VB.net
vous les connaissez ?
"Zim" <"r[omuald].szymanskiANTI"@SPAM.laposte.net> a écrit dans le message de news: %
ce qu'il me faudrait ca serait une fonction similaire qui puisse traduire un message entier (messages d'ideos -> entier | message d'entiers -> ideos)
Si ca existe pas, avoir l'equivalent de ces 2 fonctions T-SQL en ASP.net pour les integrer a une boucle utilisant substring().
Merci
Vous avez tout dit ... Il suffit de boucler sur chaque caractère de votre message (avec Substring) et de transformer.
oui mais la boucle il faut que je la fasse en VB.net
c a cet effet qu'il me faudrait l'equivalent des fonctions SQL NChar() et
Unicode() --> en VB.net
vous les connaissez ?
"Zim" <"r[omuald].szymanskiANTI"@SPAM.laposte.net> a écrit dans le message
de news: %237yW1ebyFHA.3892@TK2MSFTNGP12.phx.gbl...
ce qu'il me faudrait ca serait une fonction similaire
qui puisse traduire un message entier (messages d'ideos -> entier |
message d'entiers -> ideos)
Si ca existe pas, avoir l'equivalent de ces 2 fonctions T-SQL en ASP.net
pour les integrer a une boucle utilisant substring().
Merci
Vous avez tout dit ...
Il suffit de boucler sur chaque caractère de votre message (avec
Substring) et de transformer.