2014-01-18 250 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