I hope this will be useful:
-------------------------------------------------------
Step 1: KML file loaded from local disk:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="
http://www.opengis.net/kml/2.2">
<NetworkLink>
<name>Name</name>
<description></description>
<Snippet></Snippet>
<visibility>0</visibility>
<Link>
<href>
http://192.168.11.7:4007/KML</href>
</Link>
</NetworkLink>
</kml>
-------------------------------------------------------
Step 2: Initial KML document sent by server, after generating unique
session ID for each GE concurrent instances:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="
http://www.opengis.net/kml/2.2">
<NetworkLink id="N_LNK_4007_1_0">
<name>New link name</name>
<open>1</open>
<Link>
<href>
http://192.168.11.7:4007/KML?SESS=0</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>10</refreshInterval>
</Link>
</NetworkLink>
</kml>
-------------------------------------------------------
Step 3: first KML document send by server on FIRST refresh - this is
working well with special characters:
<Document>
<Folder id="A111_FOLDER_4007_1_0">
<name>Folder name</name>
<Snippet></Snippet>
<description></description>
<Placemark id="A111_ICON_4007_1_0">
<name>Name containing % or ° characters</name>
<Snippet></Snippet>
<description><![CDATA[ this is description which may contains % or
° characters ]]></description>
<visibility>1</visibility>
</Placemark>
</Folder>
</Document>
</kml>
-------------------------------------------------------
Step 4: Updates send by server on NEXT refresh - GE raises error here
due presence of % and ° characters
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="
http://www.opengis.net/kml/2.2">
<NetworkLinkControl>
<Update>
<targetHref>
http://192.168.11.7:4007/KML?SESS=0</targetHref>
<Change>
<Placemark targetId="A111_ICON_4007_1_0">
<name>Updated name containing % or ° character</name>
</Placemark>
</Change>
</Update>
</NetworkLinkControl>
</kml>
-------------------------------------------------------
Step 4 alternative 1: Updates send by server on next refresh - this is
working fine, no special characters are used
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="
http://www.opengis.net/kml/2.2">
<NetworkLinkControl>
<Update>
<targetHref>
http://192.168.11.7:4007/KML?SESS=0</targetHref>
<Change>
<Placemark targetId="A111_ICON_4007_1_0">
<name>Updated name without special characters</name>
</Placemark>
</Change>
</Update>
</NetworkLinkControl>
</kml>
-------------------------------------------------------
Step 4 alternative 2: Updates send by server on next refresh - this is
working fine with special characters replaced by HTML code
(I did not tested HTML codes in <name>, just in <description>)
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="
http://www.opengis.net/kml/2.2">
<NetworkLinkControl>
<Update>
<targetHref>
http://192.168.11.7:4007/KML?SESS=0</targetHref>
<Change>
<Placemark targetId="A111_ICON_4007_1_0">
<description><![CDATA[ Updated description with degree sign
° ]]></description>
</Placemark>
</Change>
</Update>
</NetworkLinkControl>
</kml>