  			{
  				m_CountryCodeDefaultMapping[countrycode]=encoding;
  				countrycode[0]=toupper(countrycode[0]);
-@@ -41,10 +88,45 @@
+@@ -41,10 +96,47 @@
  				countrycode[2]=toupper(countrycode[2]);
  				m_CountryCodeDefaultMapping[countrycode]=encoding;
  			}
 -			else if ( (sscanf( line, "0x%x 0x%x ISO%d", &tsid, &onid, &encoding ) == 3 && encoding == 6397 )
 -					||(sscanf( line, "%d %d ISO%d", &tsid, &onid, &encoding ) == 3 && encoding == 6397 ) )
 +			else if ( (sscanf( strlower(line,lowerline), "%s gb%d", countrycode, &encoding ) == 2 && encoding == 18030)
-+				  ||(sscanf( strlower(line,lowerline), "%s gb%d", countrycode, &encoding ) == 2 && encoding == 2312))
++				  ||(sscanf( strlower(line,lowerline), "%s gb%d", countrycode, &encoding ) == 2 && encoding == 2312)
++				  ||(sscanf( strlower(line,lowerline), "%s cp%d", countrycode, &encoding ) == 2 && encoding == 936))
 +			{
 +				m_CountryCodeDefaultMapping[countrycode]=GB18030_ENCODING;
 +				countrycode[0]=toupper(countrycode[0]);

 	"T1": "Bitte benutzen Sie die Hoch/Runter-Tasten, um Ihre Sprache auszuwählen. Danach drücken Sie bitte OK.",
 	"T2": "Sprachauswahl",
diff -Naur git.orig/lib/python/Components/Language.py git/lib/python/Components/Language.py
--- git.orig/lib/python/Components/Language.py	2011-10-30 14:46:09.000000000 +0800
+++ git/lib/python/Components/Language.py	2011-11-03 21:15:13.542046954 +0800
@@ -13,6 +13,8 @@
 		# name, iso-639 language, iso-3166 country. Please don't mix language&country!
 		# also, see "precalcLanguageList" below on how to re-create the language cache after you added a language

 		if (res)
 		{
 			unsigned int dvbnamespace = it->first.getDVBNamespace().get()&0xFFFF0000;
@@ -1749,7 +1778,7 @@
 	for (std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator it(m_db->m_services.begin());
 		it != m_db->m_services.end(); ++it)
 	{
