Index: Wiki/src/main/resources/MSOffice/GetEncodingService.xml
===================================================================
--- Wiki/src/main/resources/MSOffice/GetEncodingService.xml (revision 0)
+++ Wiki/src/main/resources/MSOffice/GetEncodingService.xml (revision 0)
@@ -0,0 +1,61 @@
+
+
+
+MSOffice
+GetEncodingService
+
+en
+0
+
+XWiki.Admin
+XWiki.Admin
+
+XWiki.Admin
+1239491696000
+1239493018000
+1239493018000
+2.1
+GetEncodingsService
+
+
+
+
+false
+xwiki/1.0
+false
+
+$xwiki.getEncoding()
+
Index: XWikiLib/Clients/IXWikiClient.cs
===================================================================
--- XWikiLib/Clients/IXWikiClient.cs (revision 18614)
+++ XWikiLib/Clients/IXWikiClient.cs (working copy)
@@ -177,6 +177,12 @@
/// The full name of the xwiki page
/// The struts action.
/// The URL for the specified page and action.
- String GetURL(String documentFullName, String xwikiAction);
+ String GetURL(String documentFullName, String xwikiAction);
+
+ ///
+ /// Gets the encoding from the wiki instance.
+ ///
+ /// A String containing the encoding type.
+ String GetEncoding();
}
}
Index: XWikiLib/Clients/XWikiHTTPClient.cs
===================================================================
--- XWikiLib/Clients/XWikiHTTPClient.cs (revision 18614)
+++ XWikiLib/Clients/XWikiHTTPClient.cs (working copy)
@@ -627,6 +627,20 @@
reader.Close();
return response;
}
+ ///
+ /// Gets the encoding of the wiki instance.
+ ///
+ /// The string containing the encoding type.
+ public string GetEncoding()
+ {
+ String uri = ServerURL + XWikiURLs.GetEncoding;
+ Stream data = webClient.OpenRead(uri);
+ StreamReader reader = new StreamReader(data);
+ String response = reader.ReadToEnd();
+ data.Close();
+ reader.Close();
+ return response;
+ }
#endregion
}
Index: XWikiLib/Clients/XWikiXMLRPCClient.cs
===================================================================
--- XWikiLib/Clients/XWikiXMLRPCClient.cs (revision 18614)
+++ XWikiLib/Clients/XWikiXMLRPCClient.cs (working copy)
@@ -128,6 +128,10 @@
{
throw new NotImplementedException();
}
+ public string GetEncoding()
+ {
+ throw new NotImplementedException();
+ }
#endregion
}
Index: XWikiLib/XWiki/XWikiURLFactory.cs
===================================================================
--- XWikiLib/XWiki/XWikiURLFactory.cs (revision 18614)
+++ XWikiLib/XWiki/XWikiURLFactory.cs (working copy)
@@ -16,6 +16,7 @@
static String wikiStructureURL = "/xwiki/bin/view/MSOffice/StructureService?xpage=plain";
static String attachmentServiceURL = "/xwiki/bin/view/MSOffice/AttachmentService?xpage=plain";
static String protectedPagesURL = "/xwiki/bin/view/MSOffice/ProtectedPages?xpage=plain";
+ static String getEncoding = "/xwiki/bin/view/MSOffice/GetEncodingService?xpage=plain";
///
/// Gets or sets the URL of the service that handles attachments.
@@ -72,5 +73,15 @@
get { return protectedPagesURL; }
set { protectedPagesURL = value; }
}
+
+ ///
+ /// Gets the encoding of the wiki.
+ ///
+ public static String GetEncoding
+ {
+ get { return getEncoding; }
+ set { getEncoding = value; }
+ }
+
}
}
Index: XWord/AddinActions.cs
===================================================================
--- XWord/AddinActions.cs (revision 18614)
+++ XWord/AddinActions.cs (working copy)
@@ -406,7 +406,8 @@
addin.AddinStatus.Syntax = addin.DefaultSyntax;
}
//Convert the source to the propper encoding.
- Encoding iso = Encoding.GetEncoding("ISO-8859-1");
+ string encodingType = Client.GetEncoding();
+ Encoding iso = Encoding.GetEncoding(encodingType);
byte[] content = Encoding.Unicode.GetBytes(cleanHTML);
byte[] wikiContent = null;
wikiContent = Encoding.Convert(Encoding.Unicode, iso, content);
@@ -485,7 +486,8 @@
pageContent = pageContent + newPageText;
FileStream stream = new FileStream(localFileName, FileMode.Create);
//byte[] buffer = UTF8Encoding.UTF8.GetBytes(pageContent.ToString());
- Encoding iso = Encoding.GetEncoding("ISO-8859-1");
+ string encodingType = Client.GetEncoding();
+ Encoding iso = Encoding.GetEncoding(encodingType);
byte[] buffer = iso.GetBytes(pageContent);
stream.Write(buffer, 0, buffer.Length);
stream.Close();