我們數據驅動一些文字在我們的數據庫中,如產品名稱等。最近我們的營銷團隊要求我們顯示與特殊字符的產品名稱,如註冊商標符號®,ASCII碼174如何在Oracle中存儲ascii字符並在網頁中正確顯示它們?
我問題是,我們如何最好地將這個字符存儲在我們的數據中,以便它能夠以HTML和非HTML格式正確顯示?起初,我們嘗試了這樣的事情:
update products_table set display_name = 'FooCorp' || chr(174) || ' Awesome Product' where product_id = 1;
當我查詢蟾蜍該產品,註冊商標符號顯示正確,但是當我們試圖和查詢,並在我們的web應用程序顯示的文本,無論是火狐還是IE知道如何顯示它。兩者都顯示「帶鑽石的鑽石?」符號代替。
接下來,我們這樣做:
update products_table set display_name = 'FooCorp® Awesome Product' where product_id = 1;
...這使得我們的web應用程序開心,但當然任何非HTML,試圖展現一個產品列表(例如:生成報告的SQL查詢)現在顯示名稱中的HTML字符。
任何人都有關於我們如何能夠同時滿足HTML和非HTML世界的任何想法?理想情況下,我們希望避免使用單獨的列來複制文本,但如果這是唯一的方法,我們可以走這條路。
什麼是數據庫字符集(我假設'display_name'是'VARCHAR2')?什麼是網頁的字符集? –
數據庫字符集顯示爲:WE8ISO8859P1,而我們網頁的頁面編碼爲UTF-8。這可能是問題,我不得不看看我們是否能以某種方式進行匹配。 – AHungryDinosaur
你不一定需要(或想要)他們匹配。但是,您確實需要在某個時候進行字符集轉換。如果客戶端「NLS_LANG」設置正確,Oracle客戶端將愉快地將數據從ISO-8859-1轉換爲UTF-8。您的數據從數據庫字符集轉換爲網頁的字符集在哪裏? –