本文转自:
https://example-code.com/sql/charset_convert_file_from_utf8_to_ansi.asp
CREATE PROCEDURE ChilkatSample
BEGIN
DECLARE @hr int
DECLARE @sTmp0 nvarchar(4000)
DECLARE @charset int
EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Charset', @charset OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
DECLARE @success int
EXEC sp_OAMethod @charset, 'UnlockComponent', @success OUT, 'Anything for 30-day trial.'
IF STR(@success) <> 1
BEGIN
EXEC sp_OAGetProperty @charset, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @charset
RETURN
EXEC sp_OASetProperty @charset, 'FromCharset', 'utf-8'
EXEC sp_OASetProperty @charset, 'ToCharset', 'ANSI'
-- We could alternatively be more specific and say "Windows-1252".
-- The term "ANSI" means -- whatever character encoding is defined as the ANSI
-- encoding for the computer. In Poland, for example, it would be the single-byte-per-char
-- used to represnt Eastern European language chars, which is Windows-1250.
EXEC sp_OASetProperty @charset, 'ToCharset', 'Windows-1252'
EXEC sp_OAMethod @charset, 'ConvertFile', @success OUT, 'qa_data/txt/cafeUtf8.txt', 'qa_output/cafeAnsi.txt'
IF STR(@success) <> 1
BEGIN
EXEC sp_OAGetProperty @charset, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @charset
RETURN
PRINT 'Success.'
EXEC @hr = sp_OADestroy @charset