浏览代码

CPackWIX: Omit codepage conversion when internal encoding is already UTF-8.

Nils Gladitz 10 年之前
父节点
当前提交
98a3b2e29e

+ 1 - 1
Source/CPack/WiX/cmCPackWIXGenerator.cxx

@@ -430,7 +430,7 @@ void cmCPackWIXGenerator::AddDefinition(cmWIXSourceWriter& source,
   tmp << name << "=\"" << value << '"';
 
   source.AddProcessingInstruction("define",
-    cmWIXSourceWriter::WindowsCodepageToUtf8(tmp.str()));
+    cmWIXSourceWriter::CMakeEncodingToUtf8(tmp.str()));
 }
 
 bool cmCPackWIXGenerator::CreateWiXSourceFiles()

+ 8 - 2
Source/CPack/WiX/cmWIXSourceWriter.cxx

@@ -10,6 +10,8 @@
   See the License for more information.
 ============================================================================*/
 
+#include "cmStandardIncludes.h"
+
 #include "cmWIXSourceWriter.h"
 
 #include <CPack/cmCPackGenerator.h>
@@ -118,7 +120,7 @@ void cmWIXSourceWriter::AddProcessingInstruction(
 void cmWIXSourceWriter::AddAttribute(
   std::string const& key, std::string const& value)
 {
-  std::string utf8 = WindowsCodepageToUtf8(value);
+  std::string utf8 = CMakeEncodingToUtf8(value);
 
   File << " " << key << "=\"" << EscapeAttributeValue(utf8) << '"';
 }
@@ -132,8 +134,11 @@ void cmWIXSourceWriter::AddAttributeUnlessEmpty(
     }
 }
 
-std::string cmWIXSourceWriter::WindowsCodepageToUtf8(std::string const& value)
+std::string cmWIXSourceWriter::CMakeEncodingToUtf8(std::string const& value)
 {
+#ifdef CMAKE_ENCODING_UTF8
+  return value;
+#else
   if(value.empty())
     {
     return std::string();
@@ -167,6 +172,7 @@ std::string cmWIXSourceWriter::WindowsCodepageToUtf8(std::string const& value)
     &utf8[0], static_cast<int>(utf8.size()), 0, 0);
 
   return std::string(&utf8[0], utf8.size());
+#endif
 }
 
 

+ 1 - 1
Source/CPack/WiX/cmWIXSourceWriter.h

@@ -43,7 +43,7 @@ public:
   void AddAttributeUnlessEmpty(
     std::string const& key, std::string const& value);
 
-  static std::string WindowsCodepageToUtf8(std::string const& value);
+  static std::string CMakeEncodingToUtf8(std::string const& value);
 
 protected:
    cmCPackLog* Logger;