diff --git a/src/xercesc/dom/impl/DOMWriterImpl.cpp b/src/xercesc/dom/impl/DOMWriterImpl.cpp
index 99a834f7ec28b626baefb67e3bc29c454898f518..641a7c72a0f628dfa3c5a07fa5017d7e80e20fc8 100644
--- a/src/xercesc/dom/impl/DOMWriterImpl.cpp
+++ b/src/xercesc/dom/impl/DOMWriterImpl.cpp
@@ -17,6 +17,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.58  2005/04/21 09:05:57  cargilld
+ * Add detection for UCS-2 and treat as another UTF16 alias.
+ *
  * Revision 1.57  2005/03/20 19:02:45  cargilld
  * Implement versions of uppercase and compareIstring that only check a to z, instead of all characters, and don't rely on functionality provided in the transcoders.
  *
@@ -1824,7 +1827,9 @@ void DOMWriterImpl::processBOM()
              (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString2) == 0) ||
              (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString3) == 0) ||
              (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString4) == 0) ||
-             (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString5) == 0)  ) 
+             (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString5) == 0) ||
+             (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString6) == 0) ||
+             (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString7) == 0)  ) 
     {
 #if defined(ENDIANMODE_LITTLE)
             fFormatter->writeBOM(BOM_utf16le, 2);
diff --git a/src/xercesc/internal/XMLReader.cpp b/src/xercesc/internal/XMLReader.cpp
index 9cf43a697b27613a060509644997033ecadb1775..c1a5cc43dfb08fb58488e243261b6908707d6e91 100644
--- a/src/xercesc/internal/XMLReader.cpp
+++ b/src/xercesc/internal/XMLReader.cpp
@@ -1219,7 +1219,9 @@ bool XMLReader::setEncoding(const XMLCh* const newEncoding)
         ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString2)
         ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString3)
         ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString4)
-        ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString5))
+        ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString5)
+        ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString6)
+        ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString7))
         {
             fMemoryManager->deallocate(inputEncoding);
 
diff --git a/src/xercesc/util/TransService.cpp b/src/xercesc/util/TransService.cpp
index 81beb591d251e0517b669ccda03f4632cb31422f..51c53c6b61939fefadb24599a1de5c9502e5a4b2 100644
--- a/src/xercesc/util/TransService.cpp
+++ b/src/xercesc/util/TransService.cpp
@@ -424,6 +424,24 @@ void XMLTransService::initTransService()
         )
     );
     gMappings->put
+    (
+		(void*)XMLUni::fgUTF16EncodingString6,
+        new EEndianNameMapFor<XMLUTF16Transcoder>
+        (
+            XMLUni::fgUTF16EncodingString6
+            , false
+        )
+    );
+    gMappings->put
+    (
+		(void*)XMLUni::fgUTF16EncodingString7,
+        new EEndianNameMapFor<XMLUTF16Transcoder>
+        (
+            XMLUni::fgUTF16EncodingString7
+            , false
+        )
+    );
+    gMappings->put
     (
 		(void*)XMLUni::fgUCS4EncodingString,
         new EEndianNameMapFor<XMLUCS4Transcoder>
diff --git a/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp b/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
index 111848b2ab0ae06d9395b87da38d085ba23f1937..919520f8ca92ec3b126e3cb0c6b8fc1a99aee11c 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
@@ -698,6 +698,33 @@ void Uniconv390TransService::initTransService()
            )
        );
        gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString5,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString5
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString6,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString6
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString7,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString7
+               , false
+           )
+       );
+       gMappings->put
        (
    		(void*)XMLUni::fgUCS4EncodingString,
            new EEndianNameMapFor<XMLUCS4Transcoder>
@@ -942,6 +969,33 @@ void Uniconv390TransService::initTransService()
            )
        );
        gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString5,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString5
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString6,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString6
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString7,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString7
+               , false
+           )
+       );
+       gMappings->put
        (
    		(void*)XMLUni::fgUCS4EncodingString,
            new EEndianNameMapFor<XMLUCS4Transcoder>
diff --git a/src/xercesc/util/XMLUni.cpp b/src/xercesc/util/XMLUni.cpp
index 4d5da295b84fbcddd0e8ab19ffb061d715d91e68..ef2ca4b9c6367fd5f2fa541bd729602aa7ddcc27 100644
--- a/src/xercesc/util/XMLUni.cpp
+++ b/src/xercesc/util/XMLUni.cpp
@@ -430,6 +430,17 @@ const XMLCh XMLUni::fgUTF16EncodingString5[] =
     chLatin_U, chLatin_T, chLatin_F, chDigit_1, chDigit_6, chNull
 };
 
+const XMLCh XMLUni::fgUTF16EncodingString6[] =
+{
+    chLatin_U, chLatin_C, chLatin_S, chDash, chDigit_2, chNull
+};
+
+const XMLCh XMLUni::fgUTF16EncodingString7[] =
+{
+    chLatin_I, chLatin_S, chLatin_O, chDash, chDigit_1, chDigit_0, chDigit_6, chDigit_4
+    , chDigit_6, chDash, chLatin_U, chLatin_C, chLatin_S, chDash, chDigit_2, chNull
+};
+
 const XMLCh XMLUni::fgUTF16BEncodingString[] =
 {
     chLatin_U, chLatin_T, chLatin_F, chDash, chDigit_1, chDigit_6, chSpace, chOpenParen, chLatin_B, chLatin_E, chCloseParen, chNull
diff --git a/src/xercesc/util/XMLUni.hpp b/src/xercesc/util/XMLUni.hpp
index fd94e44dcf0e3b3ccab54fe351a48576600f3169..6d991f2818eb31a931153a40b1108cf26af0eed4 100644
--- a/src/xercesc/util/XMLUni.hpp
+++ b/src/xercesc/util/XMLUni.hpp
@@ -119,6 +119,8 @@ public :
     static const XMLCh fgUTF16EncodingString3[];
     static const XMLCh fgUTF16EncodingString4[];
     static const XMLCh fgUTF16EncodingString5[];
+    static const XMLCh fgUTF16EncodingString6[];
+    static const XMLCh fgUTF16EncodingString7[];
     static const XMLCh fgUTF16BEncodingString[];
     static const XMLCh fgUTF16BEncodingString2[];
     static const XMLCh fgUTF16LEncodingString[];