powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Спасти файл, содержащий символы unicode
18 сообщений из 18, страница 1 из 1
Спасти файл, содержащий символы unicode
    #32746930
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открываю файл
Open nmFile For Output As #fnm
и пишу в него текст, содержащий латинские буквы, цифры и ивритские символы
Спасаю файл, открываю, вижу латинские буквы и цифры, а вместо иврита - вопросительные знаки. Делаю то же самое в NotePad и спасаю как unicode file - все в порядке. А как это сделать программно?
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747194
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Долго пытался понять от чего нужно спасать файл...
Пришел к выводу что его все-таки нужно сохранить :)

Когда пишешь в файл, конвертируй в юникод

Код: plaintext
Write #fnm, StrConv(YorString, vbFromUnicode)

Magnus
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747306
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23Долго пытался понять от чего нужно спасать файл...
Пришел к выводу что его все-таки нужно сохранить :)

Когда пишешь в файл, конвертируй в юникод

Код: plaintext
Write #fnm, StrConv(YorString, vbFromUnicode)

Magnus

Понятно, что файлы надо спасать от таких пользователей, как я!
Как перевести на русский save file?

Огромное спасибо! Это - подходящее решение для меня и очень простое!

Но все-же, если сейчас открываю сохраненный таким образом файл в NotePad, то текст записанный в Unicode предварен некоторыми символами. В то же время, если спасти файл из NotePad, как Unicode, такого эффекта нет.
Можно ли это сделать программно?
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747322
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да все так же, это я в начале неверное написал.
Код: plaintext
StrConv(YourString, vbUnicode)
Magnus
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747329
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, это не проблема! Я сообразил как написать правильно.
И спрашиваю уже после получения файла с Unicode
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747341
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Что - то я под вечер туго соображаю.
Если не ошобаюсь то символы иврита и так должны записываться двумя байтами...

Откуда ты их читаешь?

Magnus
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747373
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю из таблицы
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747381
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картина совершенно аналогичная если я пишу в файл из кода
Open nmFile For Output As #fnm
Print #fnm, Format(!Language), "!" & String(255, "@"))
где !Language поле из рекордсета (иврит)
Спасаю : Close #fnm
Открываю файл - там ????????

Открываю новый текстовый файл в NotePad. Пишу что-нибудь на иврите. Пытаюсь спасти файл, получаю сообщение, что написан unicode и для того, чтобы сохранить информацию я должн изменить опцию инкодинга. Если я не проделываю этого и спасаю файл, то при открытии файла так-же получаю ???????? Если же произвожу предложенную операцию, в файле вижу то, что писал на иврите.

Если в коде пишу
Print #fnm, Format(StrConv(!Language), "!" & String(255, "@"), vbUnicode)
то при открытии файла в NotePad вижу свой иврит с набором чудесных символов.
В принципе, они не мешают прочитать текст обратно в таблицу, но как-то не нравится и разобраться хочется...
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747387
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения! Я не прав, читать это как раз-таки мешает, так как текст в файле оказывается неформатированным, или точнее, форматирован не по моему формату! Так что решение не совсем удовлетворительное. :((
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747389
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм 2 раза.
А ты пробовал при чтении делать обратно vbFromUnicode ?

Magnus
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747394
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23Хм 2 раза.
А ты пробовал при чтении делать обратно vbFromUnicode ?

Magnus

Конечно! Как же иначе! Дело в том, что эти символы, о которых я говорил (их много) сбивают полностью формат строки. Или что-то надо трюкачить, вместо запланированных 255 символов, предназанченных для поля, прописать раза в 2 больше или все же искать другое решение.
Кстати, похоже, такой же эффект и с русским языком.
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747406
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня совсем не похоже. Русский сохраняется юникодом, в файле действительно второй байт левый, так и должно быть. Но прочитав строку и конвертировав ее обратно(vbFromUnicode) - получаю именно то что писал.

Лады, кидай код сюда. Нето будет долго ловить твоих крокодилов.

Magnus
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747416
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что из кода бросить? Я по кускам как-будто все прописал.
В одном месте только был не точен. когда сохраняю файл из кода, получаю не вопросительные знаки, а знаки с бльшими кодами аски.

Я должен уйти. До завтра! Спасибо за помощь!
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747465
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бросить куски сохранения/чтения и так чтоб было понятно откуда берется и куда уодит переменная содержащая данные.
И желательно пример самих данных(может я как нибудь извернусь и смогу его у себя попробовать)

Magnus
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747767
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо, я вчера к вечеру слегка "перегрелся". Действительно, все работает нормально. Пишу в файл:

Print #1, "דימה"
В NotePad получаю: "ãéîä"
И если теперь читаю из файла
Line Input #2, ll
Получаю ll = "דימה"
Что совершенно нормально. Прблема оказалась в другом. Если теперь я пишу в таблицу:
CurrentDb.Execute "insert into t1 (name) values ('" & ll & "');"
то в таблице получаю опять "ãéîä". И вот здесь не помогает ни
CurrentDb.Execute "insert into t1 (name) values ('" & StrConv(ll, vbFromUnicode) & "');"
ни
CurrentDb.Execute "insert into t1 (name) values (StrConv(""" & ll & """, vbUnicode));"
Ручной ввод в таблицу (@Arial Unicode MS) допускает вводить все подряд и английский и иврит и русский
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32747795
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докладываю, до чего дошел в изучении этой проблемы.

Чтобы файл с unicode был таковым и окрывался в notepad, надо чтобы первые 2 байта были с кодами 255 и 254.

UNICODE содержимое строки безвозвратно убивается при конкатенации с не-unicode строкой.

А еще sql-сервер (если mssql) не станет воспринимать юникод, если нет предваряющего символа N перед юникодной строкой.

Код: plaintext
1.
 _________
Свет в конце тоннеля временно потушен по техническим причинам. 
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32748416
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бьюсь - ничего не выходит... :(
Подготовить файл под Unicode нет проблем:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim bUnicodeSignature( 1  To  2 ) As Byte, bResString() As Byte

bUnicodeSignature( 1 ) = &HFF: bUnicodeSignature( 2 ) = &HFE

nmf = "d:\wincar\lang\test.lng"
Open nmf For Binary As # 1 
Put # 1 ,  1 , bUnicodeSignature
Close # 1 

Файл test.lng создается. Если теперь в NotePad пишу в нем иврит и сохраняю, без лишних вопросов файл сохраняется и сохраняется введенная запись.
Если же в этот файл писать программно (открывал файл в модах Append, Binary, Random) иврит (пользовался и Print и Write и Put) в файле иврит не нахожу. Не помогает и функция StrConv с vbFromUnicode или vbUnicode.
Можете смеяться над моими этими экспериментами, но не работает! :((
...
Рейтинг: 0 / 0
Спасти файл, содержащий символы unicode
    #32748703
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Определилось, что это происходит на моем компе. На компе соседа все работает нормально! Даже то - что было написано на моем компе, его NotePad читает текст корректно. Но что происходит у меня? Может быть это связано с тем, что на компе установлено 4 языка? ХР
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Спасти файл, содержащий символы unicode
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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