兑换 ”???? ??????”在阿拉伯语言

时间:2014-01-18 11:15:57

标签: ios iphone sql-server

我从这样的远程sql server获取数据

  

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

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

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

那我怎么解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

sql server可能有两种可能的原因来显示某些unicode数据,例如????????

  

原因1.
当unicode数据插入或更新时   用户没有用N作为字符串前缀的列。

     

原因2.
列本身不是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    ║
╠═══════════════╬═══════════════╬═══════════════╣
║ ??? ?? ?????? ║ ??? ?? ?????? ║ ??? ?? ?????? ║
║ ??? ?? ?????? ║ هذا هو العربي ║ هذا هو العربي ║
╚═══════════════╩═══════════════╩═══════════════╝

只有数据Where Column允许存储unicode字符,当我使用N前缀时,其余的数据只会显示在???????。

在您的情况下,您只是丢失了数据,您无法将其转换回unicode / Arabic字符。哎哟:S