2016-11-23 88 views
1

我知道這是一個常見問題,但我無法找到我的問題的答案。我目前正在研究HTML編輯器。只需點擊一下按鈕,您就可以從瀏覽器視圖切換到文本視圖。如果我再次按下按鈕,則瀏覽器將再次顯示HTML代碼。但我也可以在文本模式下手動更改代碼,如果我這樣做,代碼將顯示錯誤。例如:如果我寫的是這樣的:HTML:錯誤的編碼

ÖU形

,我改變的東西,它會顯示這樣的:

A- A「AOE

我已經試過這個:

byte[] bytes = Encoding.Default.GetBytes(mytextbox.Text); 
string htmlcode = Encoding.UTF8.GetString(bytes); 

這:

HttpUtility.HtmlDecode 

,但沒有工作。我希望你能幫助我。

編輯:

我有一個WPF web瀏覽器,我可以用MSHTML編輯我的代碼。如果我寫的是這樣的:

ÖU形

,我切換到文本視圖,此代碼:

mytextbox.Text = doc.body.outerHTML; 

在文本框中顯示的HTML代碼:

<BODY>Ö Ä Ü</BODY> 

該文本框是ReadOnly如果你想編輯這個你需要按另一個按鈕。如果我編輯的文本以及與此代碼更改爲當前BrowserView中再次:

if (myWebBrowser != null) 
{ 
    myWebBrowser.Dispose(); 
    browsergrid.Children.Remove(myWebBrowser); 
} 
if (doc != null) 
{ 
    doc.clear(); 
} 
myWebBrowser = new WebBrowser(); 
browsergrid.Children.Add(myWebBrowser); 
myWebBrowser.NavigateToString(mytextbox.Text); 
doc = myWebBrowser.Document as HTMLDocument; 
doc.designMode = "On"; 

的瀏覽器顯示此:

A- A「AOE

+0

你能發佈HTML代碼嗎? – Raptor

+0

你肯定,*絕對*應該使用該代碼。你不應該在任何地方使用'Encoding.Default'。現在,你對這個問題的診斷有多遠?你如何顯示HTML? –

+0

這不是編碼的工作方式。您無法在一種編碼中獲取字節,並將它們解釋爲UTF8。 –

回答

1

自己修復。在這裏,如果有人想解決知道:

我改變了我的默認文檔字符串從

<html><body></body></html> 

<html><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><body></body></html> 

我改變了我的TextBox到一個RichTextBox,因爲代碼會更清晰我只是用這個來展示我的HTML代碼的主體:

mytextbox.Text = doc.body.outerHTML; 

and I edite d它看到整個HTML代碼:

myRichTextBox.Document.Blocks.Clear(); 
myRichTextBox.Selection.Text= doc.documentElement.innerHTML; 

的代碼加載HTML代碼返回給瀏覽器:

string htmlcode = new TextRange(myRichTextBox.Document.ContentStart, myRichTextBox.Document.ContentEnd).Text; 
myWebBrowser.NavigateToString(htmlcode); 

謝謝您的回答!

2

您可以使用html碼爲那些人物。這些代碼可以在This Link中找到。

你的情況:

更換O與& Ouml; //刪除「;」之前的空格

用&取代Ä; //刪除「;」之前的空格

用&代替ü; //刪除「;」之前的空格