我试图在SQL 2008数据库中存储阿拉伯字符串,但它转换为“问号”为什么?我该怎么办?
答案 0 :(得分:51)
您需要为varchar / char列选择阿拉伯语排序规则或使用Unicode(nchar / nvarchar)
CREATE TABLE #test
(
col1 VARCHAR(100) COLLATE Latin1_General_100_CI_AI,
col2 VARCHAR(100) COLLATE Arabic_CI_AI_KS_WS,
col3 NVARCHAR(100)
)
INSERT INTO #test VALUES(N'لا أتكلم العربية',N'لا أتكلم العربية',N'لا أتكلم العربية')
注意上面插入语句中的N值。如果您没有提及它,系统会将值视为Varchar,而不是NVarchar。
SELECT * FROM #test
返回
col1 col2 col3
------------------------------ ------------------------------ ------------------------------
?? ????? ??????? لا أتكلم العربية لا أتكلم العربية
要查看阿拉伯语归类列表,请使用
SELECT name, description
FROM fn_helpcollations()
WHERE name LIKE 'Arabic%'
答案 1 :(得分:12)
答案 2 :(得分:5)
您可以更改数据库级别的排序规则,而不是更改数据库中的每个列:
USE master;
GO
ALTER DATABASE TestDB
COLLATE Arabic_CI_AI;
GO
答案 3 :(得分:3)
插入表格(列)值( N 'xxx')。)
您应该在字符串前面加上N以使其 unicode
答案 4 :(得分:1)
在每个值之前添加'N'。 例如:
INSERT INTO table1 VALUES(N'aaaaaaaaa',N'ששששששששששששש',N'aaaaaaaaaaa',N'ششششششششششش')
答案 5 :(得分:1)
This是有帮助的,但这是在任何情况下都对我有用的方法
ALTER DATABASE [数据库]设置SINGLE_USER并立即回滚;
GO
ALTER DATABASE [数据库] COLLATE ARABIC_CI_AS;
GO
ALTER DATABASE [数据库] SET MULTI_USER;
GO
更新:最终我必须在项目中将数据类型varchar更改为nvarchar
答案 6 :(得分:0)
确保所有表格和varchar
列都具有utf8_general_ci
答案 7 :(得分:0)
列数据类型为nvarchar()
插入到CompanyMaster值中(N'“ + txtCompNameAR.Text +”',N'“ + txtCompAddressAR.Text +”','“ + txtPh.Text +”')
答案 8 :(得分:-6)
Iti很容易在Oracle中存储阿拉伯字符串。使用此代码:
declare @P_CUSTOMER_NAME nchar(50)
set @P_CUSTOMER_NAME2=N'أختبار'
以上将在Oracle中保存得很好。