我們正在做一個AJAX調用來從數據庫中檢索。由於我們的客戶可能使用不同的語言,因此我們將所有內容編碼爲Unicode以存儲在數據庫中(不必擔心排序問題等)。現在,當我們獲取要顯示在輸入文本字段中的內容時,它將顯示Unicode代碼。檢查HTML 4 documentation for input和值是一個CDATA它告訴我這些unicode應顯示爲他們的字符。
從附加的屏幕截圖可以看出情況並非如此,我想知道是否有辦法「強制」這種行爲。在輸入字段強制顯示來自Unicode的文本
回答
由於我們的客戶端可以使用不同的語言,我們都編碼成ASCII到數據庫存儲(保存擔心排序規則和這樣)。
恕我直言,將html實體存儲到數據庫中是一種非常糟糕的做法。我強烈建議你在任何地方都使用UTF-8編碼。這可以讓你免於擔心排序等問題。
我的歉意,那不是ASCII碼,這是unicode。 – Purefan 2010-09-22 19:50:03
您正在傳遞一個完整的&#...;
數字字符引用的JavaScript字符串。 JavaScript字符串不是HTML編碼的,因此您的代碼確實會生成包含&符號,哈希等的JS字符串。
當您將其設置爲輸入的DOM值(val()
)時,自然那些&號將仍然存在。 DOM屬性是純字符串,而不是標記。如果您打算將其標記用於與innerHTML
/html()
一起使用,則只需在JavaScript中對HTML進行編碼。
因此,PHP不應該HTML編碼不會插入到HTML中的內容。使用json_encode()
創建JavaScript字符串文字:
$('#js_global_status_input').val(<?php echo json_encode($status_value); ?>);
非常感謝您的時間和建議,但是,由於它沒有對我的工作進行到底,這裏是Ajax響應:$( 「#js_status_input」)VAL( 「מ ה ב ר א ש ש ל ך?」)。那是使用json_encode – Purefan 2010-09-28 11:47:02
你還在傳遞&符號和哈希值。不要那樣做,除了標記之外,它們沒有任何意義。 'val()'不是標記,你需要傳遞一個正常的,未編碼的字符串:'val('מהבראששלך')',或者,如果在JSON字符串中轉義爲ASCII碼安全('json_encode'將會執行默認),'val(「\ u05de \ u05d4 \ u05d1 \ u05e8 \ u05d0 \ u05e9 \ u05e9 \ u05dc \ u05da」)'。您需要讓您的服務器端腳本停止對正在分發的值進行HTML編碼。 – bobince 2010-09-28 12:29:11
如果你實際上在你的數據庫內容中有'מ ה ...',那麼你遇到了很大的問題。雖然你可以通過在PHP中調用'html_entity_decode($ s,ENT_QUOTES,'utf8')'來解決這個問題,但是在你的數據庫中使用HTML編碼的文本肯定表明你的應用程序正在做一些非常錯誤的事情,編碼所有輸入,而不是在輸出階段進行編碼。數據庫內容應始終以原始文本形式保存。 – bobince 2010-09-28 12:32:13
- 1. 在表格中顯示來自文本字段的輸入
- 2. 如何顯示來自文本字段的用戶輸入
- 3. 強制jQuery UI Datepicker在下面的輸入字段中顯示
- 4. 點擊顯示文本字段(輸入)
- 5. asp.net MVC 4顯示Unicode文本字段
- 6. 如何在輸入字段中顯示文本字段?
- 7. 顯示隱藏的輸入字段與自定義文本
- 8. 強制用戶在輸入文本字段中輸入英文鍵盤
- 9. 使HTML輸入字段僅顯示爲字段中的文本
- 10. 如何在文本字段中顯示輸入的數字?
- 11. 將來自MySql的文本顯示爲輸入類型文本
- 12. Android的文本輸入 - 在字段中顯示的字段名稱本身
- 13. AIR Android強制數字文本輸入
- 14. 來自輸入的回顯文本
- 15. 在文本字段中顯示Unicode字符
- 16. 如何在php中顯示來自mySQL表的Unicode文本?
- 17. PHP - 在div中顯示來自mysql文本字段的html
- 18. 在Tcl/Tk輸入字段強制輸入大寫字母
- 19. 根據來自文本字段的輸入打開PDF文檔
- 20. 顯示帶有文本字段輸入的提示
- 21. rails-顯示來自文本字段的特殊字符數
- 22. 當選擇文本輸入時強制鍵盤顯示
- 23. 顯示來自控制器的文本
- 24. 在文本輸入字段
- 25. 在文本字段中輸入時顯示預製建議的列表
- 26. 輸入字段不顯示
- 27. 顯示輸入字段
- 28. Unity3D輸入字段顯示「????????」
- 29. 不顯示輸入字段
- 30. 顯示自定義輸入字段上的文件的名稱
強制使用有效字符的最佳方式是使用適當的編碼 - UTF8。這是2010年,你知道的。 – naivists 2010-09-22 16:48:43
我的歉意,那不是ASCII碼,這是unicode。是的,我知道這是2010年,我們生活在地球,謝謝。 – Purefan 2010-09-22 19:50:31
你把「Unicode」和「HTML實體」搞混了。 – BalusC 2010-09-24 00:31:21