locked
UTF-8 file irasa RRS feed

  • Question

  • hali

    egy SP altal visszaadott resultot kene UTF-8as fajlforamban elmentenem SQL-bol.
    probalkoztam BCP-vel:

    bcp "exec icSVF.dbo.utf8teszt" queryout D:\infociti\utf8bcp.html -T -n -Craw -SBINARIT-SRV03\INFOCITI
    ez igy kb okes is lenne, de a fajl elejere odarak egy 8B 00 00 00 00 00 00 00 sorozatot amit nem tudok onnan eltuntetni.
    milyen kapcsolot vagy mit kene csinalni, hogy az NE legyen ott?

    az SPben csak ez van, tutti nem onnan jon:


    create proc utf8teszt
    as
    begin
      select '<head><meta http-equiv=Content-Type content="text/html; charset=utf-8"></head>'
        + dbo.ToUTF8('árvíztűrőtükörfúrógép ÁRVÍZTŰRŐTÜKÖRFÚRÓGÉP') as gg
    end
    


    Potyos
    Monday, January 4, 2010 11:43 AM

Answers

  • a -n helyett -c kellett, es igy "maris" jo lett, es 1250es codepageval megy a dolog.

    bcp "exec icSVF.dbo.utf8teszt" queryout D:\infociti\utf8bcp.html -T -c -C1250 -SBINARIT-SRV03\INFOCITI
    mellekelem a nagyon bonyolult utf-8ra konvertalo fgv-t hatha kell valakinek :)

    CREATE function [dbo].[ToUTF8](@a varchar(max)) returns varchar(max)
    as
    begin
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'á',char(195) + char(161))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'Á',char(195) + char(129))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'é',char(195) + char(169))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'É',char(195) + char(137))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'í',char(195) + char(173))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'Í',char(195) + char(141))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'ó',char(195) + char(179))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'Ó',char(195) + char(147))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'ö',char(195) + char(182))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'Ö',char(195) + char(150))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'ő',char(197) + char(145)) --c5 91
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'Ő',char(197) + char(144)) --c5 90
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'ú',char(195) + char(186))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'Ú',char(195) + char(154))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'ü',char(195) + char(188))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'Ü',char(195) + char(156))
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'ű',char(197) + char(177)) --c5 b1
    	select @a = replace(@a collate HUNGARIAN_CS_AS,'Ű',char(197) + char(176)) --c5 b0
    	return @a
    end
    

    Potyos
    • Marked as answer by Pötyös Monday, January 4, 2010 12:42 PM
    Monday, January 4, 2010 12:42 PM