簡體   English   中英

將 SQL 服務器中的文本值從 GB2312 轉換為 WINDOWS-1251

[英]Convert text value in SQL Server from GB2312 to WINDOWS-1251

我在 SQL 服務器中有一個使用 GB2312 Chinese_PRC_CI_AS 編碼的列。 如何以 WINDOWS-1251 編碼轉換和保存文本? 我想在 SQL 服務器上進行查詢。 有小費嗎?

只需確保使用正確的排序規則聲明源和目標char / varchar列,SQL 服務器可以為您處理轉換。

例如:

CREATE TABLE #GB2312_Test (
  Example varchar(70) collate Chinese_PRC_CI_AS
);
CREATE TABLE #UCS2_Test (
  Example nvarchar(70)
);
CREATE TABLE #CP1251_Test (
  Example varchar(70) collate SQL_Latin1_General_CP1251_CI_AS
);
-- Insert data, note the N-prefix for National Characters...
INSERT INTO #GB2312_Test (Example) VALUES
  (N'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'),
  (N'абвгдеёжзийклмнопрстуфхцчшщъыьэюя');

INSERT INTO #UCS2_Test
  SELECT Example FROM #GB2312_Test;

INSERT INTO #CP1251_Test
  SELECT Example FROM #GB2312_Test;

-- Select data
SELECT Example, datalength(Example) as [Length]--, cast(Example as varbinary(max)) as [Bytes]
FROM #GB2312_Test;

SELECT Example, datalength(Example) as [Length]--, cast(Example as varbinary(max)) as [Bytes]
FROM #UCS2_Test;

SELECT Example, datalength(Example) as [Length]--, cast(Example as varbinary(max)) as [Bytes]
FROM #CP1251_Test;

輸出以下結果:

例子 長度
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ 66
абвгдеёжзийклмнопрстуфхцчшщъыьэюя 66
例子 長度
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ 66
абвгдеёжзийклмнопрстуфхцчшщъыьэюя 66
例子 長度
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ 33
абвгдеёжзийклмнопрстуфхцчшщъыьэюя 33

任何不能直接映射的字符要么被映射到它們最接近的 US-ASCII 等價物,要么被替換為? (問號)字符。

您可以添加一個“數據轉換”組件,然后您可以 select 為它的代碼頁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM