我从这样的远程sql server获取数据
“USER_NAME”=“???? ??????”;
我必须在阿拉伯语中获得用户名的价值,但我得到了??????。 我在数据库中提交了navchar类型的文本。 我使用这些代码行: -
NSString *output = [[feed objectForKey:@"USER_NAME"] stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding];
NSLog(@"%@",output);
那我怎么解决这个问题呢?
答案 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