|  22.02.2017, 14:41 | #1 | 
| Участник | Ax 2009 Unicode 
			
			Привет всем. Словили странный баг под 2009-й аксаптой. Ядро RU7 (build 5.0.1500.4570) или build 5.0.1600.3596 БД оракл. Ходит под линуксом. В текстовое поле записываем текст на французском, все символы с диакритикой ее теряют. т.е. сохраняем строчку àéç она превращается в aec Непонятно почему так. Если сторонним средством (например PL SQL DEVELOPER) записать текст в базу напрямую, то в базу значение запишется, но аксапта при отображении срезает все надстрочные символы. Т.е. значение портится как при записи в БД так и при чтении. При этом если табличка кешируется, то в кеше значения корректно отображаются и могут поначалу ввести в заблуждение, но стоит сбросить кеш и получить значение из БД, как получаем кривые значения. В чем может быть причина ? Последний раз редактировалось Logger; 22.02.2017 в 15:12. | 
|  | 
|  22.02.2017, 14:46 | #2 | 
| Участник | 
			
			Параметры БД X++: select * from nls_database_parameters NLS_RDBMS_VERSION = 12.1.0.2.0 NLS_NCHAR_CONV_EXCP = FALSE NLS_LENGTH_SEMANTICS = BYTE NLS_COMP = BINARY NLS_DUAL_CURRENCY = $ NLS_TIMESTAMP_TZ_FORMAT = DD-MON-RR HH.MI.SSXFF AM TZR NLS_TIME_TZ_FORMAT = HH.MI.SSXFF AM TZR NLS_TIMESTAMP_FORMAT = DD-MON-RR HH.MI.SSXFF AM NLS_TIME_FORMAT = HH.MI.SSXFF AM NLS_SORT = BINARY NLS_DATE_LANGUAGE = AMERICAN NLS_DATE_FORMAT = DD-MON-RR NLS_CALENDAR = GREGORIAN NLS_NUMERIC_CHARACTERS = ., NLS_NCHAR_CHARACTERSET = UTF8 NLS_CHARACTERSET = CL8MSWIN1251 NLS_ISO_CURRENCY = AMERICA NLS_CURRENCY = $ NLS_TERRITORY = AMERICA NLS_LANGUAGE = AMERICAN | 
|  | 
|  22.02.2017, 14:54 | #3 | 
| Участник | 
			
			Сбацал класс для просмотра настроек - во вложении. Выводит так: select * from nls_database_parameters NLS_RDBMS_VERSION = "12.1.0.2.0" NLS_NCHAR_CONV_EXCP = "FALSE" NLS_LENGTH_SEMANTICS = "BYTE" NLS_COMP = "BINARY" NLS_DUAL_CURRENCY = "$" NLS_TIMESTAMP_TZ_FORMAT = "DD-MON-RR HH.MI.SSXFF AM TZR" NLS_TIME_TZ_FORMAT = "HH.MI.SSXFF AM TZR" NLS_TIMESTAMP_FORMAT = "DD-MON-RR HH.MI.SSXFF AM" NLS_TIME_FORMAT = "HH.MI.SSXFF AM" NLS_SORT = "BINARY" NLS_DATE_LANGUAGE = "AMERICAN" NLS_DATE_FORMAT = "DD-MON-RR" NLS_CALENDAR = "GREGORIAN" NLS_NUMERIC_CHARACTERS = ".," NLS_NCHAR_CHARACTERSET = "UTF8" NLS_CHARACTERSET = "CL8MSWIN1251" NLS_ISO_CURRENCY = "AMERICA" NLS_CURRENCY = "$" NLS_TERRITORY = "AMERICA" NLS_LANGUAGE = "AMERICAN" SELECT * FROM nls_session_parameters NLS_LANGUAGE = "AMERICAN" NLS_TERRITORY = "AMERICA" NLS_CURRENCY = "$" NLS_ISO_CURRENCY = "AMERICA" NLS_NUMERIC_CHARACTERS = ".," NLS_CALENDAR = "GREGORIAN" NLS_DATE_FORMAT = "DD-MON-RR" NLS_DATE_LANGUAGE = "AMERICAN" NLS_SORT = "BINARY" NLS_TIME_FORMAT = "HH.MI.SSXFF AM" NLS_TIMESTAMP_FORMAT = "DD-MON-RR HH.MI.SSXFF AM" NLS_TIME_TZ_FORMAT = "HH.MI.SSXFF AM TZR" NLS_TIMESTAMP_TZ_FORMAT = "DD-MON-RR HH.MI.SSXFF AM TZR" NLS_DUAL_CURRENCY = "$" NLS_COMP = "BINARY" NLS_LENGTH_SEMANTICS = "BYTE" NLS_NCHAR_CONV_EXCP = "FALSE" SELECT * FROM nls_instance_parameters NLS_LANGUAGE = "AMERICAN" NLS_TERRITORY = "AMERICA" NLS_SORT = "" NLS_DATE_LANGUAGE = "" NLS_DATE_FORMAT = "" NLS_CURRENCY = "" NLS_NUMERIC_CHARACTERS = "" NLS_ISO_CURRENCY = "" NLS_CALENDAR = "" NLS_TIME_FORMAT = "" NLS_TIMESTAMP_FORMAT = "" NLS_TIME_TZ_FORMAT = "" NLS_TIMESTAMP_TZ_FORMAT = "" NLS_DUAL_CURRENCY = "" NLS_COMP = "BINARY" NLS_LENGTH_SEMANTICS = "BYTE" NLS_NCHAR_CONV_EXCP = "FALSE" Последний раз редактировалось Logger; 22.02.2017 в 15:07. | 
|  | 
|  22.02.2017, 15:13 | #4 | 
| Moderator | 
			
			Не уверен что это все еще работает для DAX2009 (это такой пережиток времен 2.1), но в моем axsysen-us.ktd и axsysru.ktd есть такая замечательная строчка: Цитата: 
		
			#97 >TC_COLSEQ >Definition of collating sequence mapping >This table is used when sorting letters and strings >First line is the letters to be mapped >Second line is the corresponding letter to map to AàáâãäÀÁÂÃÄBCçÇDEèéêëÈÉÊËFGHIìíîïÌÍÎÏJKLMNñÑOòóôõöÒÓÔÕÖPQRSTUùúûüÙÚÛÜVWXYýÝZæøåÆØÅ aaaaaaaaaaabcccdeeeeeeeeefghiiiiiiiiijklmnnnooooooooooopqrstuuuuuuuuuvwxyyyz~¦Ç~¦Ç Последний раз редактировалось fed; 22.02.2017 в 15:21. | 
|  | |
| За это сообщение автора поблагодарили: Logger (49). | |
|  22.02.2017, 15:53 | #5 | 
| Участник | Цитата: Чо-то не сработало  Попробовал просто значение удалить - тоже не сработало. Похоже в Exe-ник зашили. Или настройка в БД не та. | 
|  | 
|  22.02.2017, 16:04 | #6 | 
| Участник | 
			
			Просканировал ax32Serv.exe Нашел рядышком 2 эти строки. Похоже их вкомпилили в Exe-ник а KTD уже не используется. Попробую пропатчить exe-ник. Надеюсь помогет. | 
|  | 
|  22.02.2017, 19:20 | #7 | 
| Участник | 
			
			не знаю, в чем причина, но могу подтвердит, что моя 2009 нормално отображала все французские символы (писал транслитом, так что пропали мягкие знаки)
		 
				__________________ Felix nihil admirari | 
|  | 
|  22.02.2017, 21:26 | #8 | 
| Участник | |
|  | 
|  23.02.2017, 11:15 | #9 | 
| Участник | 
			
			Попробовал патчить Exe и ktd Не помогает. | 
|  | 
|  23.02.2017, 11:42 | #10 | 
| Moderator | 
			
			А не пробовали аналогичный эксперимент поставить над временной таблицей, которая гарантировано не в Оракле живет ?
		 | 
|  | 
|  23.02.2017, 13:16 | #11 | 
| Участник | Цитата: Т.е. обходной путь - использовать мемо. | 
|  | |
| За это сообщение автора поблагодарили: Logger (49). | |
|  23.02.2017, 16:39 | #12 | 
| Участник | |
|  | 
|  23.02.2017, 16:40 | #13 | 
| Участник | Цитата: Точно работает! А как вы догадались ? Что-то припоминаю из документации что у мемо полей внутри кодировка может отличаться от основной и все вроде работало. Надо поискать. Заодно может станет понятно, как сделать для обычных или почему это нельзя сделать. | 
|  | 
|  24.02.2017, 09:49 | #14 | 
| Moderator | 
			
			Я бы еще посоветовал в AOS в регистре попробовать прописать NLS_LANG=russian_russia.UTF8. И посмотреть что после этого получиться... Кстати - никогда не ставил DAX2009 на оракле и даже не знаю, какие там строковые поля используются - VARCHAR или NVARCHAR? | 
|  | |
| За это сообщение автора поблагодарили: Logger (8). | |
|  27.02.2017, 09:56 | #15 | 
| Участник | |
|  | 
|  02.03.2017, 10:13 | #16 | 
| Участник | |
|  | 
|  02.03.2017, 10:14 | #17 | 
| Участник | |
|  | 
| Теги | 
| unicode, utf8, оракл | 
|  | 
| 
 |