Я прочитал китайскую строку с php на VB.net, это частичный код
header("Content-type: text/html; charset=utf-8");
...
echo "测试用";
...
затем прочтите с vb.net:
Dim Str() As Byte = Encoding.UTF8.GetBytes(chinese_string)
Dim newStr() As Byte = Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Default, Str)
Dim strUTF8 As String = Encoding.UTF8.GetString(newStr)
строка вывода - : "测试 �? .." но когда я повторяю "测试 用 的", это может отображаться нормально. если количество строк нечетное, оно будет искажено, но четное - это нормально.
при прямом чтении или использовании Encoding.GetEncoding ("GB2312"). GetString (newBy1) я получил "浼 佷 笟 鐗?"
Что такое chinese_string? Как вы его получите?. Строка в кодировке UTF-8 может быть напрямую передана в свойство TextBox.Text без какой-либо промежуточной кодировки. Даже если текущий шрифт TextBox не поддерживает эти символы.
Я получаю от mysql, и кодировка mysql тоже utf8
'mysqli_set_charset ($ con, "utf8"); $ sql = "ВЫБРАТЬ * ОТ пользователя WHERE UserID = '$ userid' ORDER BY ID"; если ($ result = mysqli_query ($ con, $ sql)) while ($ row = mysqli_fetch_array ($ result, MYSQL_ASSOC)) echo $ row ['Имя']. "\ n";
если я могу изменить php на echo iconv ("UTF-8", "GBK", $ row ['Name']), получить напрямую с php, он будет отображаться нормально, по какой-то причине я не могу изменить файлы php, просто может изменять файл VB.NET.






Для меня этот код не имеет смысла. Вы начинаете с
Stringи конвертируете его вBytes, используя кодировку UTF8. Все идет нормально. Затем вы конвертируете этиBytesиз кодированного представления UTF8 исходногоStringв представление с использованием кодировки по умолчанию. Все еще хорошо. Наконец, вы беретеBytes, представляющийStringв кодировке по умолчанию, и пытаетесь преобразовать их вString, используя кодировку UTF8. Почему вы ожидаете, что этот последний шаг принесет что-то полезное?