Après investigation profonde (très profonde) j'ai trouvé la solution
J'ai un code Visual Basic qui va chercher des infos sur un site web via un page php
code en VB pour lancer la commande sur le site :
My.Computer.Network.DownloadFile(urlPhp, FileCSV)
urlPhp va fouiner dans une base MySQL et écrire le résultat de la requète sur la sortie standard (avec echo) sous le format CSV
mais il faut faire attention que sa sortie standard écrit en UTF-8 et non pas en ISO-8859-1
le cas échéant dans le code php sur le serveur il faut convertir à l'aide d'un petite fonction :
function convISO2U($str) {
$i="ISO-8859-1";
$o="UTF-8";
return(iconv($i,$o,$str));
}
puis dans le code en visual basic on peut utiliser cette petite fonction :
Public Function decodeFromWeb(ByVal s As String) As String
' Create two different encodings.
Dim win As Encoding = Encoding.GetEncoding(1252)
Dim web As Encoding = Encoding.GetEncoding(65001)
' Convert the string into a byte[].
Dim fBytes As Byte() = web.GetBytes(s)
' Perform the conversion from one encoding to the other.
Dim tBytes As Byte() = Encoding.Convert(web, win, fBytes)
Dim tChars(win.GetCharCount(tBytes, 0, tBytes.Length) - 1) As Char
win.GetChars(tBytes, 0, tBytes.Length, tChars, 0)
Dim tString As New String(tChars)
Return (tString)
End Function
pour la conversion on a plusieurs solution, en france le mieux c'est celle que j'utilise ici soit :
encoding web (65001 - utf-8) encoding Win (1252 - Windows-1252)
mais toutes les suivantes fonctionnent aussi :web (65001 - utf-8) Win (1250 - windows-1250)web (65001 - utf-8) Win (1254 - windows-1254) web (65001 - utf-8) Win (1256 - windows-1256)web (65001 - utf-8) Win (1257 - windows-1257) web (65001 - utf-8) Win (1258 - windows-1258)
Pour trouver ces codages, j'ai fait une fonction de recherche en balayant toutes les combinaisons possibles de conversion.
Bises