2014-01-18 2 views
1

Я получаю данные с удаленного сервера sql, как это .Конвертировать "???? ??????" на арабский язык

"USER_NAME" = "???? ??????";

Мне нужно получить значение имени пользователя на арабском языке, но я получаю ??????. У меня есть текст типа navchar, хранящийся в базе данных. Я использую следующие строки кода: -

NSString *output = [[feed objectForKey:@"USER_NAME"] stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding]; 
       NSLog(@"%@",output); 

Так как я могу это исправил?

+0

Дополнительная информация необходима. Как вы получаете объект «feed» с сервера (покажите свой код)? Какой формат и кодировка используется сервером для отправки ответа? –

+0

Нет, я не .. –

+0

@MartinR ok. Я использую частные библиотеки для доступа к удаленному sql-серверу, и я получаю этот результат от базы данных. – user3094994

ответ

0

Там может быть две причин для SQL-сервера, чтобы показать некоторые данные Юникода как ????????

Причина 1.
когда данные Юникода бледные вставок или изменений в эту колонку пользователя вратарь префикса строки с N.

Причина 2.
Столбец сам не является NVARCHAR означает, что он не позволяет хранить символы юникода для хранения.

Пример

DECLARE @TABLE TABLE 
(Column1 VARCHAR(100),   --<-- VARCHAR DataType 
Column2 NVARCHAR(100),   --<-- NVARCHAR DataType 
Column3 NVARCHAR(100)COLLATE Arabic_CI_AS --<-- NVARCHAR DataType with specific 
)            -- arabic collation 

INSERT INTO @TABLE VALUES 
('هذا هو العربي','هذا هو العربي', 'هذا هو العربي'), -- Data with out N Prefix 
(N'هذا هو العربي',N'هذا هو العربي', N'هذا هو العربي') -- Data with N Prefix 

SELECT * FROM @TABLE 

Результат

╔═══════════════╦═══════════════╦═══════════════╗ 
║ Column1 ║ Column2 ║ Column3 ║ 
╠═══════════════╬═══════════════╬═══════════════╣ 
║ ??? ?? ?????? ║ ??? ?? ?????? ║ ??? ?? ?????? ║ 
║ ??? ?? ?????? ║ هذا هو العربي ║ هذا هو العربي ║ 
╚═══════════════╩═══════════════╩═══════════════╝ 

только данные, где колонка позволяет Unicode символы, которые будут храниться и когда я использовал N префикс будет иметь данные, хранящиеся в остальном только показывает ???????.

В вашем случае вы просто потеряли данные, которые вы не можете преобразовать обратно в символы Unicode/Arabic. Ouch: S

+0

Я использую эту lib для подключения удаленного SQL-сервера [sql] (http://objcsharp.wordpress.com/2013/10/15/an-open-source-sql-server-library-for-ios/). Там он использует NTBSTRINGBIND для связывания столбца и SYBCHAR – user3094994

+0

@ user3094994: поддерживает ли IOS арабский язык? – houssam

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