Как добавить поддержку UTF-8 в приложение SmartGWT

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

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

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

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

=== 2015-04-22 12:45:25,929 [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.importExcelDS_add] net.sourceforge.jtds.jdbc.Driver успешно выполнен поиск

=== 2015-04-22 12:45:25,929 [9-27] DEBUG PoolableSQLConnectionFactory - [builtinApplication.importExcelDS_add] DriverManager для извлечения соединения для SQLServer через URL-адрес jdbc jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbilling;useUnicode= истина;characterEncoding=UTF-8;sendStringAsUnicode= истина;User=teoit;Password= Соп

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

=== 2015-04-22 12: 45: 25,999 [9-27] INFO SQLDriver - [builtinApplication.importExcelDS_add] Выполнение обновления SQL для SQLServer: INSERT INTO sales (доступно, productMth, productName, productYr) ЗНАЧЕНИЯ (NULL, NULL, 'به آسا اماکن ۸ ٪ - ۴ لیتر - محلول ضد عفونی کننده', NULL)

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

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

2 ответа

Хорошо, получил его на работу и для людей, которые хотят получить ответ на эту проблему. Я получил это, назначив тип поля как ntext. так вот файл источника данных и поле с именем 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>

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

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

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

Другие вопросы по тегам