Unicode utf8 et clipboard

Résolu
jplamontre Messages postés 2 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 9 juin 2014 - Modifié par Whismeril le 5/05/2014 à 23:01
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 9 juin 2014 à 13:51
Bonjour,

avec vb.net je cherche à copier du html dans le presse papier.
Ca marche bien, sauf pour les caractères unicode
j'explique :
le "é" vaut h'E9' en utf16, et h'C3A9' en utf8, ce qui donne "é" au final.

si je copie un é depuis une page html et que je regarde ce qu'il y a dans le clipboard, je trouve mon é entre
<!--StartFragment-->
et
<!--EndFragment-->

Version:1.0
StartHTML:000000222
EndHTML:000000365
StartFragment:000000331
EndFragment:000000333
StartSelection:000000331
EndSelection:000000333
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD></HEAD><BODY><!--StartFragment-->é<!--EndFragment--></BODY></HTML>

comment on fait, partant d'un string contenant "é" pour obtenir un autre string contenant "é" ?

j'ai un bout de solution avec ceci :


Dim html_text As String
html_text = "é"

Dim EncUTF8 As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim utf8Bytes As Byte() = encutf8.GetBytes(html_text )

ici j'obtient bien un tableau de 2 bytes, contenant 195 et 169, ce qui donne c3 et A9
comment est-ce que j'en tire un string avec les 2 caractères "é" ?

j'ai essayé
html_text = utf8Bytes.ToString

mais j'obtiens "System.Byte[]"

merci d'avance

2 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
5 mai 2014 à 23:00
Déplacé vers VB.Net et colorisation du code html
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 juin 2014 à 00:00
Pour l'explication de UTF-8 :
https://en.wikipedia.org/wiki/UTF-8

Sinon, as-tu essayer de convertir en ANSI ou ISO-1152-1 (de mémoire) ton tableau d'octet obtenu ?
0
jplamontre Messages postés 2 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 9 juin 2014
Modifié par jplamontre le 9/06/2014 à 09:54
je m'en suis sorti comme ça :

Dim EncDft As System.Text.Encoding = System.Text.Encoding.Default 
Dim EncUTF8 As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
'convert utf16 to utf8, from char to hexa bytes (= int) format
Dim utf8Bytes As Byte() = encutf8.GetBytes(html_text )
'convert hexa bytes to utf8 chars
dim utf8String As String
utf8String = encdft.GetString(utf8bytes)
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 juin 2014 à 13:51
Ton problème est donc résolu ?
Si c'est le cas, penses à marquer la question comme résolue.
0
Rejoignez-nous