2013-02-07 31 views
1

我們數據驅動一些文字在我們的數據庫中,如產品名稱等。最近我們的營銷團隊要求我們顯示與特殊字符的產品名稱,如註冊商標符號®,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&#174 Awesome Product' where product_id = 1; 

...這使得我們的web應用程序開心,但當然任何非HTML,試圖展現一個產品列表(例如:生成報告的SQL查詢)現在顯示名稱中的HTML字符。

任何人都有關於我們如何能夠同時滿足HTML和非HTML世界的任何想法?理想情況下,我們希望避免使用單獨的列來複制文本,但如果這是唯一的方法,我們可以走這條路。

+0

什麼是數據庫字符集(我假設'display_name'是'VARCHAR2')?什麼是網頁的字符集? –

+0

數據庫字符集顯示爲:WE8ISO8859P1,而我們網頁的頁面編碼爲UTF-8。這可能是問題,我不得不看看我們是否能以某種方式進行匹配。 – AHungryDinosaur

+0

你不一定需要(或想要)他們匹配。但是,您確實需要在某個時候進行字符集轉換。如果客戶端「NLS_LANG」設置正確,Oracle客戶端將愉快地將數據從ISO-8859-1轉換爲UTF-8。您的數據從數據庫字符集轉換爲網頁的字符集在哪裏? –

回答

0

那麼,chr(174)可能意味着甲骨文中的smth,但是當涉及到web瀏覽器時,它們可能會有diff字符。設置等...我不知道,但也許你只是硬編碼該字符到您的查詢:

SELECT 'FooCorp® Awesome Product' FROM dual; 
相關問題