powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись арабского языка в базу
12 сообщений из 12, страница 1 из 1
Запись арабского языка в базу
    #34324692
Neznaika2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, прошу помочь решить мне одну проблему.
У меня есть xml файл, он в кодировке UTF-8, часть информации в нем на арабском языке, мне нужно обработать программно этот файл и записать найденную информацию на арабском языке в базу SQL.
Я сначала присваиваю переменной содержимое XML файла

Open "C:\....." For Input As #1
While Not EOF(1)
Line Input #1, xml
Wend
Close #1

Дальше я пишу обработчик, в котором в итоге присваиваю переменной arab информацию на арабском языке, после этого эту информацию пишу в базу SQL. Однако в базе вместо арабского одни корявые символы. Даже если я в самой программе вывожу в текстовом поле арабскую информацию, тоже одни корявые символы.
Подскажите пожалуйста, как нужно написать, чтобы в итоге в базе SQL были действительно слова на арабском языке!
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34324733
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nvarchar - тип поля в базе должен быть
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34324873
Neznaika2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да в самой базе SQL поле как раз nvarchar, я просто думаю что у меня Юникод уже в процессе обработки потерялся, надо как то из файла считать этот Юникод и донести его до базы, а как это сделать не знаю.....
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34326822
Neznaika2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот даже проще, есть уже в базе записи на арабском, считываю их и сразу вывожу с помощью MsgBox, вместо арабских слов одни знаки вопросов......может надо указывать какие то параметры и как то связывать с Unicode?

Считываю очень просто
.............
qwer=rs.Fields("arabskiy")
..............
MsgBox qwer
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34326878
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Dim s as String
...
s=StrConv(rs.Fields("arabskiy"),vbFromUnicode)
...

а вот вывод этой строки уже отдельная и непростая тема
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34326901
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
http://www.cyberactivex.com/UnicodeTutorialVb.htm

полезно почитать
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34327426
Neznaika2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One
Код: plaintext
1.
2.
3.
Dim s as String
...
s=StrConv(rs.Fields("arabskiy"),vbFromUnicode)
...

а вот вывод этой строки уже отдельная и непростая тема

Попробовал такую строчку, считываю информацию, тут же пишу в базу обратно, получается ахинея.....но что интересно если считать как:

s=StrConv(rs.Fields("arabskiy"),vbUnicode) , а затем обратно записать
.......
rs.Fields("arabskiy")=StrConv(s,vbFromUnicode)

то считанная информация ложится в базу на арабском, как оттуда и взятая, еще интересен тот факт, что даже не используя StrConv, используя
.......
s=rs.Fields("arabskiy")
.........
rs.Fields("arabskiy")=s Юникод не теряется и считанные данные приходят обратно в базу без изменений. Однако если я считываю информацию из XML файла как:

Open "C:\......" For Input As #1
While Not EOF(1)
Line Input #1, xml
Wend
Close #1

то если записать в базу содержимое переменной xml

rs.Fields("arabskiy")=xml

то в базе вместо арабских слов знаки вопроса....

Хотелось бы узнать, как можно прочитать файл XML и присвоить переменной содержимое этого файла, чтобы Юникод сохранился.
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34327437
Neznaika2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One
Код: plaintext
http://www.cyberactivex.com/UnicodeTutorialVb.htm

полезно почитать

За ссылку спасибо, она действительно дельная, но там к сожалению все на английском, попробовал немного разобрался и понял что голова моя пошла кругом ;)
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34331539
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать по другому
знакомо ли тебе это или

можно xml данные после преобразования
передавать в процедуру с параметром типа ntext
внутри парсить xml и вносить в базу в нужное поле

сам файл-xml преобразовывать каждый символ в код Unicode в VB это возможно
и хранить новый xml как переменную для передачи в процедуру
так ты не зависишь от системных языковых установок
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34332480
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще строка VB6 - это unicode. При чтении из файла как у тебя каждый байт текста преобразуется в unicode текущей локали (то бишь русский символ!) после чего помещается в эту строку уже в unicode. Получается что тебе строку с русским unicod-ом надо преобразовать в арабский unicode...

Вообще - у тебя ведь на входе XML-файл - нафига ты его читаешь через Open?
Используй DOM. И посмотри там насчет возможности получить данные в заданной локали (я не пробовал, но кажись это должно быть возможно. Можешь приаттачить такую XML-ку?

А по большому счету - если подобное приложение сейчас пишется с нуля, то я бы предпочел перейти на VB.NET, иначе потом придется еще сильно извращаться с выводом символов на экран и прочими ограничениями старой Visual Studio связанными с подобной локализацией - оно тебе надо?
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34342902
Neznaika2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь, я разобрался. Проблема была в том что хоть xml файл и выдает себя за UTF-8, однако все арабские слова в UTF-16, написал модуль преобразования UTF-8 в UTF-16 и все раработало. В базу пишется все на арабском, правда проблема с выводом на экран все же осталась......а на VB.NET переходить уже поздно....серверная часть ПО уже написана, теперь буду писать клиентскую часть.
...
Рейтинг: 0 / 0
Запись арабского языка в базу
    #34343094
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Neznaika2007правда проблема с выводом на экран все же осталась......а на VB.NET переходить уже поздно....серверная часть ПО уже написана, теперь буду писать клиентскую часть.

Игры со CharSet контрола и тем же StrConv...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись арабского языка в базу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]