Добрый день! Имеется таблица содержащая в себе данные на немецком языке. Данную таблицу необходимо сохранить в качестве текстового файла с разделителями табуляции (любой другой формат не подходит). При сохранении файла в нужном формате устанавливается кодировка ANSI, из-за которой теряются специфичные символы немецкого языка (то есть умляуты заменяются на вопросительные знаки).
Возможно ли как-нибудь способом избежать потери умляутов при сохранении в данном формате, и если да, то как?
P.S. Редактировать отдельные символы в конечном файле не представляется возможным (количество данных огромно).
Проблема в том, что мне нужен файл с разделителями табуляции. И я может не понял, но этот макрос же сохраняет файл в качестве обычного текстового файла?
helper написал: При сохранении файла в нужном формате устанавливается кодировка ANSI, из-за которой теряются специфичные символы немецкого языка (то есть умляуты заменяются на вопросительные знаки).
я слышала, уже лет 10 ( или более) умляуты, вроде как, в новой немецкой орфографии отменили?.. разве нет?.. (Sorry - вспомнила - заменили эсцет на ss; умляуты не отменяли) в любом случае, нет файла - нет проблемы рекомендации, как здесь (только там для казахского алфавита)...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
JeyCi написал: рекомендации, как здесь (только там для казахского алфавита)...
Я же уже два раза сказал, что мне нужно сохранить файл именнос разделителями табуляции в кодировке, которая бы поддерживала бы немецкий алфавит. Этот же формат, что вы предлагаете, мне никак не подходит. Да и зачем мне это? Excel и так позволят сохранять таблицы в .txt в кодировке юникода.
Оффтоп:
Цитата
JeyCi написал: я слышала, уже лет 10 ( или более) умляуты, вроде как, в новой немецкой орфографии отменили?.. разве нет?.. (Sorry - вспомнила - заменили эсцет на ss; умляуты не отменяли)
На практике ничего не отменили, я даже ни разу не видел в Германии записи эсцет в виде "SS".
лучше 2 раза прочитать Правила Форума: 1 раз до открытия темы 2-й раз по линку из #4 p.s. ветку вЫ называли "Проблема с кодировками..."?.. намёк был дан - намёк не понят...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Доброе время суток Если модифицировать код Игоря под ссылке любезно предоставленной МВТ, то вполне можно записать текст в универсальной западноевропейской кодировке 1252. Может имеет смысл поискать более детальную кодировку для немецкого
Код
Public Sub Test()
Dim strOut As String, Strs() As String
Dim i As Long, vData As Variant
vData = ActiveSheet.UsedRange.Rows(1).Value
ReDim Strs(LBound(vData, 2) To UBound(vData, 2))
For i = LBound(vData, 2) To UBound(vData, 2)
Strs(i) = CStr(vData(1, i))
Next
strOut = Join(Strs, vbTab)
Debug.Print strOut
WriteWestEurope strOut, "c:\temp\3.txt"
End Sub
Public Sub WriteWestEurope(ByVal this As String, ByVal FileName As String)
With CreateObject("ADODB.Stream")
.Type = 2: .Mode = 3
.Charset = "Unicode"
.Open
.WriteText this
.Position = 0
.Charset = "Windows-1252"
.SaveToFile FileName, 2
.Close
End With
End Sub
helper написал: Я же уже два раза сказал, что мне нужно сохранить файл именно с разделителями табуляции в кодировке, которая бы поддерживала бы немецкий алфавит. ... Excel и так позволят сохранять таблицы в .txt в кодировке юникода.
Ну и в чем проблема? Так и сохраняйте. Я взял текст из файла Андрей VG, вставил в Excel, немного поменял, сохранил как "Текст Юникод", открыл в Ворде - вот и немецкий алфавит, и табуляция!
Вышла ошибка. Выходной файл получился в кодировке Unicode, а по условию ANSI Windows-1252 (западно-европейская). Надо поменять метод записи в файл на
Код
Public Sub WriteWestEurope(ByVal this As String, ByVal FileName As String)
With CreateObject("ADODB.Stream")
.Type = 2: .Mode = 3
.Charset = "Windows-1252"
.Open
.WriteText this
.Position = 0
.SaveToFile FileName, 2
.Close
End With
End Sub