|
03.08.2011, 10:26 | #1 |
Участник
|
А вы в тему загляните
Там как раз ваш вопрос обсуждался
__________________
Axapta v.3.0 sp5 kr2 |
|
03.08.2011, 10:46 | #2 |
MCITP
|
В тему я заглядывал и там есть ответы на мои вопросы. Но они не помогают.
В этой теме есть пример кода (последнее сообщение) и там всё работает. Импорт курса валют ЦБ РФ Возможно, надо было там задать вопрос, но раз уж тут это обсуждается, то и задал здесь. |
|
03.08.2011, 11:14 | #3 |
Участник
|
У вас код выполняется на сервере или на клиенте?
#io_write - из макросборки #File ('w')? В FileExists() проверяется разрешение на операцию чтения ('r'), соответственно, и пермишен должен создаваться либо на чтение, либое на чтение/запись. Ну и вообще, непонятно, зачем там вообще нужен этот пермишн (внутри FileExists(), имею в виду). Работа непосредственно с файлом идет внутри сборки и Аксаптовская защита выполнения кода не нужна
__________________
Axapta v.3.0 sp5 kr2 |
|
03.08.2011, 11:36 | #4 |
MCITP
|
Цитата:
Сообщение от AndyD
У вас код выполняется на сервере или на клиенте?
#io_write - из макросборки #File ('w')? В FileExists() проверяется разрешение на операцию чтения ('r'), соответственно, и пермишен должен создаваться либо на чтение, либое на чтение/запись. Ну и вообще, непонятно, зачем там вообще нужен этот пермишн (внутри FileExists(), имею в виду). Работа непосредственно с файлом идет внутри сборки и Аксаптовская защита выполнения кода не нужна Да, #io_write из макрособорки #File (W). Соответственно пермишен на запись. Зачем нужен пермишен я , к сожалению,не знаю. Но при компиляции сообщение выдает Цитата:
TwC: объявление об использовании API WinAPIServer.fileExists, поскольку он защищен с применением разграничения доступа кода.
Имелась в виду ошибка Цитата:
Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand (S)\Classes\WinAPIServer\fileExists - line 14 |
|
03.08.2011, 11:41 | #5 |
Участник
|
Замените #io_write на 'rw'
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: GBH (1). |
03.08.2011, 11:43 | #6 |
MCITP
|
|
|
18.01.2012, 12:11 | #7 |
Участник
|
Так вторая строка в utf-8 и написана
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: lev (2). |
18.01.2012, 14:35 | #8 |
Участник
|
Я думал что UTF8 выглядит типа %D0%9D%D0%B0%D1%82. В таком формате в ссылках содержатся текст из русских букв, вот например ссылка из-за википедии: http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5
|
|
18.01.2012, 16:25 | #9 |
Участник
|
Это уже так называемый URL Encode
В Аксапте для этого можно воспользоваться классом SysURLEncoder - передавать в него полученную строку с utf
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Just_smile (1). |
15.03.2012, 17:14 | #10 |
Участник
|
Цитата:
Простите пожалуйста , но имею проблем с вашим классом . Оно годиться только для русских букв ? Я формирую такой файлик , где есть названия и по руски , и по литовски . И вот , если попадаеться название цвета , нпр. RUDA ( по литовски 'коричневый' , нету никаких литовск.букв, чисто латинские ) . Так вот если формировать ето с Utf8::Ansi2Utf8( strupr( strlrtrim( colorsDb.ColorDescrLT ) ) ); , получаю 'RUDA` ' например . Как етого избежать етого 5-ого симбола ? Проблема . что Аксапта 3.0 , с SP4 . Пока немогу с кем ето сделать ... С уваженим , Римантас |
|
15.03.2012, 17:33 | #11 |
Участник
|
Не должно быть проблем с латинскими символами
Может, в colorsDb.ColorDescrLT еще какие-либо символы хранятся? Попробуйте сделать такой вызов Utf8::Ansi2Utf8( 'RUDA' ); - что в итоге получится?
__________________
Axapta v.3.0 sp5 kr2 |
|
15.03.2012, 17:40 | #12 |
Участник
|
Ммм.... дааа ... .. только что выяснилься , что в базе у нас UTF-8 . Так что ничего ненадо конвертировать ...
|
|
07.12.2013, 11:37 | #13 |
Moderator
|
Добрый день!
Необходимо из Аксапты 3.0 SP3 выгружать csv файлы в UTF-8 кодировки. 1. Попробовал решение AndyD - в некоторых строках появились дополнительные кракозябры 2. Скачал внешний кодировщик , вызываю его кодом: X++: void encodeFile(str _path) { ; WinAPI::shellExecute("recode", strFmt("-f cp1251...utf-8 %1", _path)); } Т.е. мой кодировщик recode кодирует в utf8_without_bom, а заказчику нужен чистый utf-8 c этим BOM-символом. 3. Пробую на C# написать перекодирование в UTF-8: X++: FileStream fs = File.Open("E:\\data\\1\\test2.txt", FileMode.Open); StreamReader sr = new StreamReader(fs, Encoding.Default); string asciText = sr.ReadToEnd(); FileStream fsw = File.OpenWrite(@"E:\\data\\1\\test4.txt"); Byte[] info = new UTF8Encoding(true).GetBytes(asciText); fsw.Write(info, 0, info.Length); Не подскажете как получить файл в кодировке UTF-8 with BOM (просто UTF-8 по мнению Notepad++)? |
|
07.12.2013, 14:35 | #14 |
Участник
|
Ну а если "руками" дописать этот BOM (0xEF 0xBB 0xBF) в файл перед конвертированными данными?..
|
|
|
За это сообщение автора поблагодарили: DreamCreator (3), Logger (1). |
07.12.2013, 15:07 | #15 |
Moderator
|
Цитата:
X++: static void Main(string[] args) { string path = args[0]; System.Text.Encoding encodingUTF = System.Text.Encoding.UTF8; System.Text.Encoding encodingWin = System.Text.Encoding.ASCII; string content = ""; using (FileStream fs = File.Open(path, FileMode.Open)) { StreamReader sr = new StreamReader(fs, Encoding.Default); content = sr.ReadToEnd(); } using (FileStream fsw = File.OpenWrite(path)) { Byte[] info = new UTF8Encoding(true).GetBytes(content); fsw.WriteByte(0xEF); fsw.WriteByte(0xBB); fsw.WriteByte(0xBF); fsw.Write(info, 0, info.Length); } } |
|
07.12.2013, 22:37 | #16 |
Участник
|
Попробуйте такой вариант, насколько помню работал, у самого нет под рукой 3-ки проверить:
X++: Com objStream = new Com('ADODB.Stream'); ; objStream.CharSet('utf-8'); objStream.Open(); objStream.WriteText('тест'); objStream.SaveToFile(@'c:\test.txt'); objStream.Close(); |
|
|
За это сообщение автора поблагодарили: DreamCreator (3), Alenka (1). |
17.12.2013, 11:13 | #17 |
Участник
|
Решение нашлось
X++: //pkoz 17.12.2013 server static str oem2Char(str strSource) { str ret; System.Text.Encoding encAnsi; System.Text.Encoding enc866; System.Byte[] bytesAnsi; System.Byte[] bytes; ; new InteropPermission(InteropKind::ClrInterop).assert(); encAnsi = System.Text.Encoding::get_Default(); enc866 = System.Text.Encoding::GetEncoding(866); bytesAnsi = encAnsi.GetBytes( strSource ); bytes = System.Text.Encoding::Convert(enc866, encAnsi, bytesAnsi); ret = encAnsi.GetString(bytes); return ret; } |
|
|
За это сообщение автора поблагодарили: gl00mie (7), demoded (2), (1). |
17.12.2013, 11:21 | #18 |
Дмитрий Ерин
|
X++: str dos2win(str _source, int _srcCodePage = 866, int _destCodePage = 1251) { System.Text.Encoding encodingSource = System.Text.Encoding::GetEncoding(_srcCodePage); System.Text.Encoding encodingDest = System.Text.Encoding::GetEncoding(_destCodePage); System.Byte[] buff = encodingSource.GetBytes(_source); str dest = encodingDest.GetString(buff); return dest; }
__________________
|
|
|
За это сообщение автора поблагодарили: Logger (10), Ace of Database (3), Weez (3). |
09.07.2014, 09:29 | #19 |
Участник
|
А как кодеровку менять в AX 3 ?
|
|
09.05.2015, 10:37 | #20 |
MCTS
|
Полезно для экспорта csv в utf8 daxdilip: Tip - How to write to utf-8 encoding format using CommaTextIo Class
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|