IF OBJECT_ID('TEMPDB.DBO.#language_check', 'U') IS NOT NULL
DROP TABLE #language_check;
CREATE TABLE #language_check (
id INT identity(1, 1) NOT NULL,
language_Used VARCHAR(50),
uni_code NVARCHAR(2000)
)
INSERT INTO #language_check (
language_Used,
uni_code
)
VALUES (
'English',
N'Hello world! this is a text input for the table'
),
(
'German',
N'Gemäß den geltenden Datenschutzgesetzen bitten wir Sie, sich kurz Zeit zu nehmen und die wichtigsten Punkte der Datenschutzerklärung von Google durchzulesen. Dabei geht es nicht um von uns vorgenommene Änderungen, sondern darum, dass Sie sich mit den wichtigsten Punkten vertraut machen sollten. Sie können Ihre Einwilligung jederzeit mit Wirkung für die Zukunft widerrufen.'
),
(
'Spanish',
N'Bajo Rs 30.000, tanto los teléfonos tienen sus propios méritos y deméritos. El OnePlus 3 puntuaciones claramente muy por delante del Xiaomi MI 5 y también mucho más que muchos teléfonos inteligentes insignia en el mercado.'
),
(
'Czech',
N'To je příklad.'
),
(
'Arabic',
N'هذا مثال على ذلك.'
)
SELECT *
FROM #language_check
这将导致如下结果。nvarchar和varchar显示相同的数据
然后加入varchar列于上述表和结果如下。
当我插入检查结果,既uni_code和nonunicode列具有相同的值,但对于阿拉伯语nonunicode列是“?????”。
- 任何人都可以详细说明uni_code和nonunicode列的相同值背后的原因。
- 为什么阿拉伯语言这两列不一样。
在此先感谢
更正确的问题是**为什么其他人都一样?** – FDavidov
我认为当您检索数据时,这些值将采用正确的格式。试一试。 – Abhishek
不确定*您要问的是 - 欧洲语言(德语,英语,西班牙语,捷克语)也会被'varchar'支持 - 在这种情况下,结果在两列中都是相同的(**如预期的**) - 但为了支持阿拉伯文,希伯来文,西里尔文,远东语等双字节语言,您必须**使用nvarchar来获得正确的结果。这是标准的,默认的,**有据可查的**行为 - 所以你在这里问我们什么**!?!?!?!?! –