Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
Привет всем. Решил посмотреть обращение к WCF ADO Net DataService + EF службе через AJAX-клиента. Сделал тестовое веб-приложение. Все хорошо, только почему-то данные отдаются в windows-1251 кодировке. WebDataService1.svc.cs Код: plaintext 1. 2. 3. 4. 5. 6. Table1: Id (int) Name (nvarchar(50)) т.е. utf-8. Default.aspx Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. Сама страница, как положено, отдается в utf-8, но запрос отдается в windows-1251. Сам файл службы почти не имеет никакого содержания. Где чё подкрутить нужно? :). Перевернув мир - оглянись, может перевернулся ты сам?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 13:41 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
Если запустить саму службу в студии напрямую, имеем такой ответ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. На страницу получаем JSON Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Заголовки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 13:53 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
Я с этой (ADO Net DataService + EF) конструкцией дело не имел, но возможно тут есть ответ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 15:35 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
у СкриптМенеджера enableGlobalization = true. По идее само поправится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 15:51 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
buredу СкриптМенеджера enableGlobalization = true. По идее само поправится. Не использую менеджер - он ругается, поскольку версия 3.5.1 FW(SP1) не имеет нужных классов в .js ресурсах. Страница отдается в utf-8. Моя коф. рабочей машины: W7 Pro x86 + VS2008SP1 + SQL2008Express У меня закралась мысль - что если БД хранит в 1251 и служба просто отдает "как есть"? Как проверить кодировку хранящихся записей? Если дернуть данные на страницу из базы через Linq2Sql, то никакой переконвертации не требуется - utf-8. Если только она не происходит прозрачно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 17:19 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
bured, И потом - дефолтный вызов службы (см. выше), без клиента уже отдает в 1251. Клиент ни при чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 17:23 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
tsyselskyЯ с этой (ADO Net DataService + EF) конструкцией дело не имел, но возможно тут есть ответ ? Не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 17:28 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
<%# Page UICulture="auto" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 18:20 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
bured<%# Page UICulture="auto" Со страницей все нормально. Я делаю запрос к службе и ОНА возвращает данные в кодировке 1251. Повторяю вопрос: Если данные в БД хранятся в 1251, то как это определить точно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2010, 20:46 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
Если заменить сгенерированный студией Database1Entities "ручным" набором классов данных, где гарантированно (?) строки в utf-8, то картина не меняется. Служба все равно отдает в кодировке 1251. Значит БД ни при чем (?). Ведь с чего-то служба включила кодировку. Или следует признать, что ADO Net Data Service - кривая/сырая штука? Есть мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2010, 13:38 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
Все что нашел о кодировке - это (примерный смысл), что служба сама(!) решает, в какой кодировке отдавать данные. И плевать она хотела на классы Entity, где прописано utf-8. И даже если запрос в заголовке исключить windows-1251 Код: plaintext Вот грабли! Лишний трафик гонять не хочется - как раз решаю задачу минимизации объема передаваемых данных. Собственно по-этому и отказался от XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2010, 12:33 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
http://www.unicode.org/faq//utf_bom.html Код: plaintext A: There are three or four options for making Unicode fit into an 8-bit format. a) Use UTF-8. This preserves ASCII, but not Latin-1, because the characters >127 are different from Latin-1. UTF-8 uses the bytes in the ASCII only for ASCII characters. Therefore, it works well in any environment where ASCII characters have a significance as syntax characters, e.g. file name syntaxes, markup languages, etc., but where the all other characters may use arbitrary bytes. Example: “Latin Small Letter s with Acute” (015B) would be encoded as two bytes: C5 9B. b) Use Java or C style escapes, of the form \uXXXXX or \xXXXXX. This format is not standard for text files, but well defined in the framework of the languages in question, primarily for source files. Example: The Polish word “wyjście” with character “Latin Small Letter s with Acute” (015B) in the middle (ś is one character) would look like: “wyj\u015Bcie". c) Use the XXXX; or DDDDD; numeric character escapes as in HTML or XML. Again, these are not standard for plain text files, but well defined within the framework of these markup languages. Example: “wyjście” would look like “wyjście" d) Use SCSU. This format compresses Unicode into 8-bit format, preserving most of ASCII, but using some of the control codes as commands for the decoder. However, while ASCII text will look like ASCII text after being encoded in SCSU, other characters may occasionally be encoded with the same byte values, making SCSU unsuitable for 8-bit channels that blindly interpret any of the bytes as ASCII characters. Example: “<SC2> wyjÛcie” where <SC2> indicates the byte 0x12 and “Û” corresponds to byte 0xDB. [AF] & [KW] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2010, 14:49 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
tsyselsky... b) Use Java or C style escapes, of the form \uXXXXX or \xXXXXX. This format is not standard for text files, but well defined in the framework of the languages in question, primarily for source files. Example: The Polish word “wyjście” with character “Latin Small Letter s with Acute” (015B) in the middle (ś is one character) would look like: “wyj\u015Bcie". ... - И что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2010, 16:51 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
iConst - И что? Вам, я так понял, нужен ответ содержащий набор кирилических символов в кодировке unicode (utf-8) это Запись 1 как мне кажется и есть набор кирилических символов ( Запись 1 ) в кодировке unicode. iConstГде чё подкрутить нужно? :). Ну дык, похоже, все нормально работает, нет? И крутить ничего не надо. :] PS Cyrillic Unicode block ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2010, 19:30 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
tsyselsky, Ежу понятно, что это кириллица - вопрос в другом: служба конвертит данные UTF-8 -> Win-1251 и вместо одной буквы я имею "и". Во сколько раз увеличится объем данных? Мне нужно передавать БОЛЬШОЙ объем этих самых данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2010, 08:55 |
|
||
|
ADO Net DataService - сменить кодировку
|
|||
|---|---|---|---|
|
#18+
Я, если откровенно, запутался малость ... Возможно мои предположения и вопросы покажутся дилетанскими, но рискну их озвучить. СУБД Есть некая сущность, хранящая набор кирилических символов в восьмибитной кодировке cp1251 ADO (EF) ADO.NET достает данные и EF создает двухбайтовые UNICOD объекты в памяти веб сервера WCF Служба сериализует эти объекты в однобайтовые текстовые символы в кодировке cp1251 форматирует их в JSON и отправляет клиенту. и это iConst "Запись 1". набор символов в кодировке windows 1251, так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2010, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=19&msg=36655471&tid=1397661]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 298ms |
| total: | 466ms |

| 0 / 0 |
