I too had faced a problem while viewing the source code in the browser. There were many extra characters that got appended apparently. By using JavaScript code to get the innerHTML property, it finally worked for me. You could probably try executing the following code:
String javascript = "return arguments[0].innerHTML";
String pageSource=(String)(JavascriptExecutor)driver)
.executeScript(javascript, driver.findElement(By.tagName("html")));
pageSource = "<html>"+pageSource +"</html>";
System.out.println(pageSource);
//FileUtils.write(new File("e:\\test.html"), pageSource,);