2015-04-22 3 views
0

Я реализую приложение smartgwt для клиента, нуждающегося в поддержке языка utf-8 (RTL). Теперь у меня есть listgrid, который принимает в персидском тексте, и когда я пытаюсь сохранить его в моей базе данных mssql 2008, он сохраняет его таким образом. вместо самого текста перисана. В моей таблице базы данных я определил тип col как nvarchar, который является требованием для сохранения utf-8. но проблема заключается в том, что smartgwt не отправляет текст в надлежащем формате. Я поставил это в моем HTML файлКак добавить поддержку UTF-8 для приложения SmartGWT

<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 

в консоли разработчика, когда я смотрю на вкладку RPC. Я вижу, что DSREquest отправляется в формате UTF-8, но в DSResponse, и в моем db я получаю это ??????. В моей таблице базы данных я определил тип col как nvarchar, который является обязательным для сохранения utf-8. но проблема заключается в том, что smartgwt не отправляет текст в надлежащем формате в db. может кто-нибудь помочь мне получить это правильно.

В консоли я вижу все правильно

=== 2015-04-22 12: 45: 25929 [9-27] INFO PoolManager - [builtinApplication.importExcelDS_add] SmartClient Пулы начался для 'SQLServer' объекты

=== 2015-04-22 12: 45: 25,929 [9-27] DEBUG PoolableSQLConnectionFactory - [builtinApplication.importExcelDS_add] Инициализация конфигурации SQL для «SQLServer» из системной конфигурации - с помощью DriverManager: net.sourceforge.jtds.jdbc .Driver

=== 2015-04-22 12: 45: 25,929 [9-27] DEBUG PoolableSQLConnectionFactory - [builtinApplication.importExc elDS_add] net.sourceforge.jtds.jdbc.Driver LookUp успешный

=== 2015-04-22 12: 45: 25929 [9-27] ОТЛАДКА PoolableSQLConnectionFactory - [builtinApplication.importExcelDS_add] DriverManager выборка соединения для SQLServer с помощью JDBC url jdbc: jtds: sqlserver: // localhost: 1433; DatabaseName = dbilling; useUnicode = true; characterEncoding = UTF-8; sendStringAsUnicode = true; User = teoit; Password = seop

=== 2015-04-22 12: 45: 25,929 [9-27] DEBUG PoolableSQLConnectionFactory - [builtinApplication.importExcelDS_add] Передача JDBC-URL только для getConnection

=== 2015-04-22 12: 45: 25,999 [9-27] INFO SQLDriver - [ builtinApplication.importExcelDS_add] Выполнение S QL обновление 'SQLServer': INSERT INTO продаж (доступно, productMth, PRODUCTNAME, productYr) VALUES (NULL, NULL, 'به آسا اماکن 8% - 4 لیتر - محلول ضد عفونی کننده', NULL)

Единственное который отсутствует, это N, который должен был существовать до строки utf-8. как так

INSERT INTO sales (available, productMth, productName, productYr) VALUES    
(NULL, NULL, N'به آسا اماکن ۸ ٪ - ۴ لیتر - محلول ضد عفونی کننده', NULL) 
can somebody help me to get this correct. 

ответ

0

Когда у меня была проблема с русскими символами я добавил этот код в конструкторе моего источника данных:

DSRequest dsRequest = new DSRequest(); 
dsRequest.setContentType("application/json; charset=utf-8"); 
setRequestProperties(dsRequest); 

Я использую REST DataSource с форматом JSON.

+0

спасибо за ваши комментарии.Я использую платформу Server (Power edition). Поэтому нужна помощь в получении результата в этом методе. Кстати, мне сказали посмотреть DataSourceField.type. В перечислении FieldType существует тип «ntext». Но я не ожидал результата. ты поможешь мне. – ZAJ

0

ОК, получил его на работу и для людей, которые хотят получить ответ на эту проблему. Я получил эту работу, назначив тип поля как ntext. так вот DataSource файл и поле называется ProductName, где у меня есть UTF-8 текст

<DataSource ID="importExcelDS" serverType="sql" tableName="sales"> 
<fields> 
    <field name="importID" type="sequence" hidden="true" primaryKey="true" /> 
    <field name="productName" title="Product Name" type="ntext" /> 
    <field name="productMth" title="product Mth" type="int" /> 
    <field name="productYr" title="product Yr" type="int" /> 
    <field name="available" title="Quantity" type="int" /> 
</fields> 

Смежные вопросы