2014-01-18 248 views
1

我从远程SQL服务器获取数据,如 。转换“???? ??????”以阿拉伯语言

“USER_NAME”=“???? ??????”;;

我必须得到用阿拉伯语言的用户名的价值,但我越来越??????。 我有数据库中提交的navchar类型的文本。 我使用这些代码: -

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

所以,我怎么能解决了这个问题?

+0

需要更多信息。你如何从服务器获取'feed'对象(显示你的代码)?服务器用什么格式和编码发送响应? –

+0

不,我不是.. –

+0

@MartinR好的。我正在使用私有库来访问远程sql服务器,我从数据库中获得这个结果。 – user3094994

回答

0

可以有用于SQL Server两个可能的原因,以显示像????????

原因一些unicode数据1.
当unicode数据寰插入或更新到 柱用户didnt与N前缀字符串。

原因2.
列本身isnt NVARCHAR表示它不允许存储要存储的Unicode字符的 。

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 /阿拉伯字符。 Ouch:S

+0

我正在使用这个库来连接远程sql server [sql](http://objcsharp.wordpress.com/2013/10/15/an-open-source-sql-server-library-for-ios/)。在那里,他使用NTBSTRINGBIND绑定列和SYBCHAR – user3094994

+0

@ user3094994:你是否支持阿拉伯语? – houssam