﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>SQLServerCentral / SQL Server 2008 / SQL Server 2008 - General  / Avoid characters that viloate UTF-8 Encoding / Latest Posts</title><generator>InstantForum.NET v2.9.0</generator><description>SQLServerCentral</description><link>http://www.sqlservercentral.com/Forums/</link><webMaster>notifications@sqlservercentral.com</webMaster><lastBuildDate>Mon, 20 May 2013 01:32:32 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>[quote][b]Khades (9/4/2012)[/b][hr]Thank you once again. I appreciate your help.What does the dbo.Tally table hold? I notice we keep querying the N column.[/quote]A "Tally" table (sometimes called a "Numbers" table) is just a table with a large column of sequentially ordered numbers which can be joined to other tables to avoid using cursors or while loops.This article will giet you started on the subject: http://www.sqlservercentral.com/articles/T-SQL/62867/BTW, in my last post above I did include some WHILE loops which could almost certainly be replaced by joining to a tally table. But it was late when I posted that and I wanted to go home. :-PBesides, in my particular case where I'm using a function very similar to this, the number of loops are likely to be minimal as these stray characters only occur infrequently and I'm using the function against a single block of code at a time and not in a SELECT statement. If using this function in a SELECT statement it would be worth the effort to try and replace them with some sort of non-looping construct.</description><pubDate>Tue, 04 Sep 2012 15:16:57 GMT</pubDate><dc:creator>Steven Willis</dc:creator></item><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>Thank you once again. I appreciate your help.What does the dbo.Tally table hold? I notice we keep querying the N column.</description><pubDate>Tue, 04 Sep 2012 15:10:38 GMT</pubDate><dc:creator>Khades</dc:creator></item><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>[quote][b]Khades (8/31/2012)[/b][hr]The character that was giving me problems is â (0xE2)[/quote]Here's a revised version of the function I posted above which in addition to checking for normal ASCII characters will remove any other extended characters either in their native form (â) or encoded form (&amp;#x). There are some examples to run at the bottom of the code.[code="sql"]CREATE FUNCTION [dbo].[svfHTMLEncodeXML]    (     @OriginalText VARCHAR(8000)    )RETURNS VARCHAR(8000)BEGIN     DECLARE        @CleanedText VARCHAR(8000)       ,@pos INT       ,@chunk VARCHAR(10)			SELECT @CleanedText = COALESCE(@CleanedText + '','')		   + CAST(CleanText.CharVal AS VARCHAR(8000))	FROM		(		SELECT		   Result.CharVal		FROM			(			SELECT				N AS RowNum				,(CASE					WHEN ASCII(SUBSTRING(@OriginalText,t.N,1)) BETWEEN 32 AND 127						THEN CAST(SUBSTRING(@OriginalText,t.N,1) AS VARCHAR(50))					WHEN ASCII(SUBSTRING(@OriginalText,t.N,1)) &amp;lt; 32						THEN NULL					WHEN ASCII(SUBSTRING(@OriginalText,t.N,1)) &amp;gt;= 127						THEN NULL				END) 				AS CharVal			FROM				dbo.Tally AS t			WHERE				t.N &amp;lt;= LEN(@OriginalText)			) AS Result		WHERE			Result.CharVal IS NOT NULL		) CleanText				SET @pos = PATINDEX('%[&amp;#x]%',@CleanedText)	WHILE @pos &amp;lt;&amp;gt; 0 		BEGIN			SET @chunk = SUBSTRING(@CleanedText,@pos,6)			SET @CleanedText = REPLACE(@CleanedText,@chunk,'')			SET @pos = PATINDEX('%[&amp;#x]%',@CleanedText)			SET @chunk = NULL		END	SET @pos = PATINDEX('%[0x]%',@CleanedText)	WHILE @pos &amp;lt;&amp;gt; 0 		BEGIN			SET @chunk = SUBSTRING(@CleanedText,@pos,6)			SET @CleanedText = REPLACE(@CleanedText,@chunk,'')			SET @pos = PATINDEX('%[0x]%',@CleanedText)			SET @chunk = NULL		END					/* This optional section removes tabs and excess spaces */	    SET @CleanedText = REPLACE(@CleanedText,CHAR(9),'    ')		-- convert tabs to spaces	SET @CleanedText = 	REPLACE(            REPLACE(                REPLACE(                    @CleanedText                ,'  ',' '+CHAR(7))            ,CHAR(7)+' ','')        ,CHAR(7),'')            SET @CleanedText = REPLACE(@CleanedText,'&amp;gt; &amp;lt;','&amp;gt;&amp;lt;')					    RETURN @CleanedText     	/*	SELECT dbo.svfHTMLEncodeXML('O&amp;xxxx;Brien')   -- sub '#x0D' for 'xxxx' to test	SELECT dbo.svfHTMLEncodeXML('OÇBrien')	SELECT dbo.svfHTMLEncodeXML('O¢Brien')	SELECT dbo.svfHTMLEncodeXML('O&amp;xxxx;Brien')   -- sub '#x0F' for 'xxxx' to test	SELECT dbo.svfHTMLEncodeXML('OâBrien')	*/	/*   --this is text with an invisible line break character in it	SELECT dbo.svfHTMLEncodeXML('O	Brien')	*/		/* -- notice the â (0xE2) in the 2nd position which the function will remove		SELECT CONVERT(XML,dbo.svfHTMLEncodeXML(	'&amp;lt;âRoot type="demographics"&amp;gt;	  &amp;lt;PersonalData&amp;gt;		&amp;lt;PersonName type="primary"&amp;gt;		  &amp;lt;GivenName&amp;gt;John&amp;lt;/GivenName&amp;gt;		  &amp;lt;MiddleName&amp;gt;A&amp;lt;/MiddleName&amp;gt;		  &amp;lt;FamilyName&amp;gt;Doe&amp;lt;/FamilyName&amp;gt;		&amp;lt;/PersonName&amp;gt;	  &amp;lt;/PersonalData&amp;gt;	&amp;lt;/Root&amp;gt;'))			*/    END[/code]</description><pubDate>Fri, 31 Aug 2012 18:39:40 GMT</pubDate><dc:creator>Steven Willis</dc:creator></item><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>The character that was giving me problems is â (0xE2)</description><pubDate>Fri, 31 Aug 2012 15:44:26 GMT</pubDate><dc:creator>Khades</dc:creator></item><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>well, the forum inteprets the escaped values as something it should render...whoops.link to the function as raw text here:[b][url=http://www.stormrage.com/SQLStuff/HTMLEncode.txt]HTMLEncode.txt[/url][/b]</description><pubDate>Fri, 24 Aug 2012 11:04:29 GMT</pubDate><dc:creator>Lowell</dc:creator></item><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>and here's a similar one i wrote long ago which converts  things like © to the html entity &amp;#169;I think it was specifically due to XML:[code]CREATE FUNCTION HTMLEncode(@OriginalText VARCHAR(4000))RETURNS VARCHAR(8000)  BEGIN   DECLARE @CleanedText VARCHAR(8000);  WITH E01(N) AS (SELECT 1 UNION ALL SELECT 1 UNION ALL                  SELECT 1 UNION ALL SELECT 1 UNION ALL                  SELECT 1 UNION ALL SELECT 1 UNION ALL                  SELECT 1 UNION ALL SELECT 1 UNION ALL                  SELECT 1 UNION ALL SELECT 1), --         10 or 10E01 rows       E02(N) AS (SELECT 1 FROM E01 a, E01 b),  --        100 or 10E02 rows       E04(N) AS (SELECT 1 FROM E02 a, E02 b),  --     10,000 or 10E04 rows--     E08(N) AS (SELECT 1 FROM E04 a, E04 b),  --100,000,000 or 10E08 rows--     E16(N) AS (SELECT 1 FROM E08 a, E08 b),  --10E16 or more rows than you'll EVER need       Tally(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY N) FROM E04)   SELECT @CleanedText = ISNULL(@CleanedText,'') +      CASE       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =34) THEN '&amp;#34;'  --" &amp;#34; &amp;quot;  quotation mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =39) THEN '&amp;#39;'  --' &amp;#39; &amp;apos;  apostrophe        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =38) THEN '&amp;#38;'  --&amp; &amp;#38; &amp; ampersand       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =60) THEN '&amp;#60;'  --&amp;lt; &amp;#60; &amp;lt;  less-than       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =62) THEN '&amp;#62;'  --&amp;gt; &amp;#62; &amp;gt;  greater-than        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =160) THEN '&amp;#160;'  --  &amp;#160;     non-breaking space        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =161) THEN '&amp;#161;'  --¡ &amp;#161;  &amp;iexcl; inverted exclamation mark       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =162) THEN '&amp;#162;'  --¢ &amp;#162;  &amp;cent;  cent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =163) THEN '&amp;#163;'  --£ &amp;#163;  &amp;pound; pound       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =164) THEN '&amp;#164;'  --¤ &amp;#164;  &amp;curren;  currency        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =165) THEN '&amp;#165;'  --¥ &amp;#165;  &amp;yen; yen       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =166) THEN '&amp;#166;'  --¦ &amp;#166;  &amp;brvbar;  broken vertical bar       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =167) THEN '&amp;#167;'  --§ &amp;#167;  &amp;sect;  section       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =168) THEN '&amp;#168;'  --¨ &amp;#168;  &amp;uml; spacing diaeresis       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =169) THEN '&amp;#169;'  --© &amp;#169;  &amp;copy;  copyright       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =170) THEN '&amp;#170;'  --ª &amp;#170;  &amp;ordf;  feminine ordinal indicator        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =171) THEN '&amp;#171;'  --« &amp;#171;  &amp;laquo; angle quotation mark (left)       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =172) THEN '&amp;#172;'  --¬ &amp;#172;  &amp;not; negation        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =173) THEN '&amp;#173;'  --­ &amp;#173;  &amp;shy; soft hyphen       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =174) THEN '&amp;#174;'  --® &amp;#174;  &amp;reg; registered trademark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =175) THEN '&amp;#175;'  --¯ &amp;#175;  &amp;macr;  spacing macron        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =176) THEN '&amp;#176;'  --° &amp;#176;  &amp;deg; degree        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =177) THEN '&amp;#177;'  --± &amp;#177;  &amp;plusmn;  plus-or-minus       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =178) THEN '&amp;#178;'  --² &amp;#178;  &amp;sup2;  superscript 2       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =179) THEN '&amp;#179;'  --³ &amp;#179;  &amp;sup3;  superscript 3       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =180) THEN '&amp;#180;'  --´ &amp;#180;  &amp;acute; spacing acute       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =181) THEN '&amp;#181;'  --µ &amp;#181;  &amp;micro; micro       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =182) THEN '&amp;#182;'  --¶ &amp;#182;  &amp;para;  paragraph       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =183) THEN '&amp;#183;'  --· &amp;#183;  &amp;middot;  middle dot        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =184) THEN '&amp;#184;'  --¸ &amp;#184;  &amp;cedil; spacing cedilla       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =185) THEN '&amp;#185;'  --¹ &amp;#185;  &amp;sup1;  superscript 1       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =186) THEN '&amp;#186;'  --º &amp;#186;  &amp;ordm;  masculine ordinal indicator       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =187) THEN '/'  --» /  &amp;raquo; angle quotation mark (right)        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =188) THEN '&amp;#188;'  --¼ &amp;#188;  &amp;frac14;  fraction 1/4        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =189) THEN '&amp;#189;'  --½ &amp;#189;  &amp;frac12;  fraction 1/2        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =190) THEN '&amp;#190;'  --¾ &amp;#190;  &amp;frac34;  fraction 3/4        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =191) THEN '&amp;#191;'  --¿ &amp;#191;  &amp;iquest;  inverted question mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =215) THEN '&amp;#215;'  --× &amp;#215;  &amp;times; multiplication        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =247) THEN '&amp;#247;'  --÷ &amp;#247;  &amp;divide;  division        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =192) THEN '&amp;#192;'  --À &amp;#192;  &amp;Agrave;  capital a, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =193) THEN '&amp;#193;'  --Á &amp;#193;  &amp;Aacute;  capital a, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =194) THEN '&amp;#194;'  --Â &amp;#194;  &amp;Acirc; capital a, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =195) THEN '&amp;#195;'  --Ã &amp;#195;  &amp;Atilde;  capital a, tilde        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =196) THEN '&amp;#196;'  --Ä &amp;#196;  &amp;Auml;  capital a, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =197) THEN '&amp;#197;'  --Å &amp;#197;  &amp;Aring; capital a, ring       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =198) THEN '&amp;#198;'  --Æ &amp;#198;  &amp;AElig; capital ae        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =199) THEN '&amp;#199;'  --Ç &amp;#199;  &amp;Ccedil;  capital c, cedilla        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =200) THEN '&amp;#200;'  --È &amp;#200;  &amp;Egrave;  capital e, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =201) THEN '&amp;#201;'  --É &amp;#201;  &amp;Eacute;  capital e, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =202) THEN '&amp;#202;'  --Ê &amp;#202;  &amp;Ecirc; capital e, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =203) THEN '&amp;#203;'  --Ë &amp;#203;  &amp;Euml;  capital e, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =204) THEN '&amp;#204;'  --Ì &amp;#204;  &amp;Igrave;  capital i, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =205) THEN '&amp;#205;'  --Í &amp;#205;  &amp;Iacute;  capital i, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =206) THEN '&amp;#206;'  --Î &amp;#206;  &amp;Icirc; capital i, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =207) THEN '&amp;#207;'  --Ï &amp;#207;  &amp;Iuml;  capital i, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =208) THEN '&amp;#208;'  --Ð &amp;#208;  &amp;ETH; capital eth, Icelandic        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =209) THEN '&amp;#209;'  --Ñ &amp;#209;  &amp;Ntilde;  capital n, tilde        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =210) THEN '&amp;#210;'  --Ò &amp;#210;  &amp;Ograve;  capital o, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =211) THEN '&amp;#211;'  --Ó &amp;#211;  &amp;Oacute;  capital o, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =212) THEN '&amp;#212;'  --Ô &amp;#212;  &amp;Ocirc; capital o, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =213) THEN '&amp;#213;'  --Õ &amp;#213;  &amp;Otilde;  capital o, tilde        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =214) THEN '&amp;#214;'  --Ö &amp;#214;  &amp;Ouml;  capital o, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =216) THEN '&amp;#216;'  --Ø &amp;#216;  &amp;Oslash;  capital o, slash        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =217) THEN '&amp;#217;'  --Ù &amp;#217;  &amp;Ugrave;  capital u, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =218) THEN '&amp;#218;'  --Ú &amp;#218;  &amp;Uacute;  capital u, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =219) THEN '&amp;#219;'  --Û &amp;#219;  &amp;Ucirc; capital u, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =220) THEN '&amp;#220;'  --Ü &amp;#220;  &amp;Uuml;  capital u, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =221) THEN '&amp;#221;'  --Ý &amp;#221;  &amp;Yacute;  capital y, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =222) THEN '&amp;#222;'  --Þ &amp;#222;  &amp;THORN; capital THORN, Icelandic        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =223) THEN '&amp;#223;'  --ß &amp;#223;  &amp;szlig; small sharp s, German       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =224) THEN '&amp;#224;'  --à &amp;#224;  &amp;agrave;  small a, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =225) THEN '&amp;#225;'  --á &amp;#225;  &amp;aacute;  small a, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =226) THEN '&amp;#226;'  --â &amp;#226;  &amp;acirc; small a, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =227) THEN '&amp;#227;'  --ã &amp;#227;  &amp;atilde;  small a, tilde        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =228) THEN '&amp;#228;'  --ä &amp;#228;  &amp;auml;  small a, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =229) THEN '&amp;#229;'  --å &amp;#229;  &amp;aring; small a, ring       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =230) THEN '&amp;#230;'  --æ &amp;#230;  &amp;aelig; small ae        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =231) THEN '&amp;#231;'  --ç &amp;#231;  &amp;ccedil;  small c, cedilla        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =232) THEN '&amp;#232;'  --è &amp;#232;  &amp;egrave;  small e, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =233) THEN '&amp;#233;'  --é &amp;#233;  &amp;eacute;  small e, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =234) THEN '&amp;#234;'  --ê &amp;#234;  &amp;ecirc; small e, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =235) THEN '&amp;#235;'  --ë &amp;#235;  &amp;euml;  small e, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =236) THEN '&amp;#236;'  --ì &amp;#236;  &amp;igrave;  small i, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =237) THEN '&amp;#237;'  --í &amp;#237;  &amp;iacute;  small i, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =238) THEN '&amp;#238;'  --î &amp;#238;  &amp;icirc; small i, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =239) THEN '&amp;#239;'  --ï &amp;#239;  &amp;iuml;  small i, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =240) THEN '&amp;#240;'  --ð &amp;#240;  &amp;eth; small eth, Icelandic        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =241) THEN '&amp;#241;'  --ñ &amp;#241;  &amp;ntilde;  small n, tilde        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =242) THEN '&amp;#242;'  --ò &amp;#242;  &amp;ograve;  small o, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =243) THEN '&amp;#243;'  --ó &amp;#243;  &amp;oacute;  small o, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =244) THEN '&amp;#244;'  --ô &amp;#244;  &amp;ocirc; small o, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =245) THEN '&amp;#245;'  --õ &amp;#245;  &amp;otilde;  small o, tilde        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =246) THEN '&amp;#246;'  --ö &amp;#246;  &amp;ouml;  small o, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =248) THEN '&amp;#248;'  --ø &amp;#248;  &amp;oslash;  small o, slash        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =249) THEN '&amp;#249;'  --ù &amp;#249;  &amp;ugrave;  small u, grave accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =250) THEN '&amp;#250;'  --ú &amp;#250;  &amp;uacute;  small u, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =251) THEN '&amp;#251;'  --û &amp;#251;  &amp;ucirc; small u, circumflex accent        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =252) THEN '&amp;#252;'  --ü &amp;#252;  &amp;uuml;  small u, umlaut mark        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =253) THEN '&amp;#253;'  --ý &amp;#253;  &amp;yacute;  small y, acute accent       WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =254) THEN '&amp;#254;'  --þ &amp;#254;  &amp;thorn; small thorn, Icelandic        WHEN(ASCII(SUBSTRING(@OriginalText,Tally.N,1)) =255) THEN '&amp;#255;'  --ÿ &amp;#255;  &amp;yuml;  small y, umlaut mark        ELSE SUBSTRING(@OriginalText,Tally.N,1)    END  FROM Tally             WHERE Tally.N &amp;lt;= LEN(@OriginalText)            RETURN @CleanedText END[/code]</description><pubDate>Fri, 24 Aug 2012 11:01:03 GMT</pubDate><dc:creator>Lowell</dc:creator></item><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>I didn't write this code and can't remember where I got it so apologies to the original author. In my case I only cared about non-ASCII characters outside the range 32-127 because the SQL XML parser handles things like '&amp;lt;' and '&amp;gt;' etc. If you need to convert other characters or tags then the case statement will need a little tweaking. Undesirable characters are replaced by '?' and then optionally all question marks are replaced with blanks.[code="sql"]CREATE FUNCTION dbo.svfCleanXML    (     @OriginalText VARCHAR(8000)    )RETURNS VARCHAR(8000)BEGIN 	/* This function requires a Tally or Numbers table */	/* http://www.sqlservercentral.com/articles/T-SQL/62867/ */	    DECLARE @CleanedText VARCHAR(8000)     SELECT        @CleanedText = ISNULL(@CleanedText,'')        + CASE                WHEN ASCII(SUBSTRING(@OriginalText,Tally.N,1)) BETWEEN 32 AND 127					THEN SUBSTRING(@OriginalText,Tally.N,1)               WHEN ASCII(SUBSTRING(@OriginalText,Tally.N,1)) &amp;lt;= 32					THEN CONVERT(VARCHAR,ASCII(SUBSTRING(@OriginalText,Tally.N,1)))               WHEN ASCII(SUBSTRING(@OriginalText,Tally.N,1)) &amp;gt;= 128					THEN CONVERT(VARCHAR,ASCII(SUBSTRING(@OriginalText,Tally.N,1)))          END    FROM        dbo.Tally    WHERE        Tally.N &amp;lt;= LEN(@OriginalText)                                SET @CleanedText = REPLACE(@CleanedText,'?','')   --optional                    RETURN @CleanedText         /*    SELECT dbo.svfCleanXML('[xml_string_here]') AS cleanString    SELECT CONVERT(XML,dbo.svfCleanXML('[xml_string_here]')) AS cleanXML    */END[/code]</description><pubDate>Fri, 24 Aug 2012 09:57:54 GMT</pubDate><dc:creator>Steven Willis</dc:creator></item><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>ok, i just googled "Non UTF-8 Characters", and the only thing i can find is when  something got malformed; otherwise, It looks like UTF covers teh whole range of possible characters.[url]http://stackoverflow.com/questions/1379416/insert-utf8-data-into-a-ms-sql-server-2008[/url][url]http://magp.ie/2011/01/06/remove-non-utf8-characters-from-string-with-php/[/url]the two links above are describing fixes for malformed strings;can you be more specific about what it is you want to remove?do you really mean high ascii characters, ie &amp;gt;127 like some of these?('ÀAlbèert ËEîinstêeiìn ÌInstìitúutëe - MPG')do you mean escaping special characters that xml requires to be htmlized? like &amp;gt; to &amp;l t ;?</description><pubDate>Thu, 23 Aug 2012 14:42:56 GMT</pubDate><dc:creator>Lowell</dc:creator></item><item><title>RE: Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>Looks like this might be in the wrong section, how do I move it to the XML secion?</description><pubDate>Thu, 23 Aug 2012 14:23:53 GMT</pubDate><dc:creator>Khades</dc:creator></item><item><title>Avoid characters that viloate UTF-8 Encoding</title><link>http://www.sqlservercentral.com/Forums/Topic1348584-391-1.aspx</link><description>I'm storing information in an XML file that is UTF-8.I have a stored procedure I use to query some tables and structure the data in XML format, which I then save into an XML file with UTF-8.I noticed that there are some characters that make it into this XML file, that violate the UTF-8 encoding. How do I avoid that?</description><pubDate>Wed, 22 Aug 2012 11:11:29 GMT</pubDate><dc:creator>Khades</dc:creator></item></channel></rss>