|
Как сменить кодировку при чтении из файла
|
|||
---|---|---|---|
#18+
На сервере кодировка CP1251 Пишу в файл .csv в кодировке CP866 do ppl.WriteLine(id_";"_$zcvt($tr(^people(id),"`",";"),"I","CP866"))Если пишу в кодировке CP1251 - в файле кракозябы. Потом читаю из этого файла.... И не пойму, как перевести прочитанное в CP1251 s str=ppl.ReadLine() w $zcvt(str,"I","CP1251")Если делать так - выводит опять кракозябы, если CP866 написать, то тоже кракозябы, только другие. Как перевести прочитанное в другую кодировку? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 09:55 |
|
Как сменить кодировку при чтении из файла
|
|||
---|---|---|---|
#18+
Midnight_girlПишу в файл .csv в кодировке CP866 do ppl.WriteLine(id_";"_$zcvt($tr(^people(id),"`",";"),"I","CP866")) при записи должно быть $zcvt(text,"O","CP866") есть разница во втором параметре, она означает направление в котором конвертировать строку, In/Out из или в текущую кодировку ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 10:32 |
|
Как сменить кодировку при чтении из файла
|
|||
---|---|---|---|
#18+
Midnight_girl , Запись в файл s file=##class(%Stream.FileCharacter).%New() s file.Filename="c:\test.csv" s file.TranslateTable="CP1251" d file.WriteLine("Привет") d file.%Save()Чтение из файла s file=##class(%Stream.FileCharacter).%New() s file.Filename="c:\test.csv" s file.TranslateTable="CP1251" w file.ReadLine(),! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 10:48 |
|
Как сменить кодировку при чтении из файла
|
|||
---|---|---|---|
#18+
DAiMor, спасибо! При чтении из файла в строку запихиваю это s str=$zcvt(ppl.ReadLine(),"O","CP866")и Cache на это согласен -) П.С. Сегодня неделя, как я учу Cache ObjectScript =) поэтому спотыкаюсь в неожиданных местах. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 10:51 |
|
Как сменить кодировку при чтении из файла
|
|||
---|---|---|---|
#18+
Midnight_girlНа сервере кодировка CP1251 Пишу в файл .csv в кодировке CP866Поэтому в примере servit должно быть: s file.TranslateTable="CP866" Midnight_girl...и Cache на это согласен -)В Cache нет встроенного ИИ :) Вы задали аргументы функции, они прошли проверку корректности. Откуда $zcvt знает, может вам и вправду надо "O"? Запомнить, когда "I", а когда "O", могут помочь простые правила: - третий аргумент - всегда внешняя таблица (и никогда - внутренняя) - в локализации, используемой по умолчанию при 8-битной установке, внутренняя таблица - CP1251; - второй аргумент (как заметил DAiMor) - направление, которое указывается относительно внутренней таблицы. Т.е., если вы кодируете (во внешнюю кодировку), то "O" - output, если раскодируете - "I". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 11:15 |
|
Как сменить кодировку при чтении из файла
|
|||
---|---|---|---|
#18+
Alexey Maslov, спасибо за пояснения -) servit, спасибо, но у меня почему-то Cache ругается на s ppl.TranslateTable="CP866" -(( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 12:33 |
|
Как сменить кодировку при чтении из файла
|
|||
---|---|---|---|
#18+
Midnight_girlно у меня почему-то Cache ругается на s ppl.TranslateTable="CP866" -((Какого типа у Вас ppl? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 14:53 |
|
Как сменить кодировку при чтении из файла
|
|||
---|---|---|---|
#18+
servit, S ppl=##class(%File).%New("C:\"_flnm) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 15:01 |
|
|
start [/forum/topic.php?fid=39&msg=38679388&tid=1556859]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 308ms |
total: | 448ms |
0 / 0 |