我有一個帶有SHIFT_JIS字符集的ASP Classic頁面。在頁面的頭部分的meta標籤是這樣的:如何在Javascript中獲取日文字符的長度?
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
我的頁面有一個文本框(txtName的)應只允許200個字符。我有一個驗證字符長度的Javascript函數,它在我的提交按鈕的onclick()事件上被調用。
if(document.frmPage.txtName.value.length > 200) {
alert("You have exceeded the maximum length of 200.");
return false;
}
問題是,JavaScript沒有得到在SHIFT_JIS中編碼的日文字符的正確長度。例如,字符測試的SHIFT_JIS長度爲8個字符,但是Javascript只是將其識別爲一個字符,可能是因爲Javascript默認使用的Unicode編碼。在SHIFT_JIS中,像ケ這樣的字符有2或3個字符。
如果我只依賴Javascript提供的長度,長日文字符會通過頁面驗證,並且會嘗試保存在數據庫上,然後由於DB列的最大長度爲200,將會失敗。
我使用的瀏覽器是Internet Explorer。有沒有辦法使用Javascript獲得日文字符的SHIFT_JIS長度?是否有可能使用Javascript從Unicode轉換爲SHIFT_JIS?怎麼樣?
感謝您的幫助!
數據庫字段不是Unicode數據類型嗎?聽起來像你正在陷入一個普通的ASP形式字符entgot難題。 – AnthonyWJones 2012-07-12 15:22:40
請參閱:http://stackoverflow.com/a/920405/17516 – AnthonyWJones 2012-07-12 15:27:07
嗨。我的數據庫有一個帶有排序規則SQL_Latin1_General_CP1_CI_AS的ISO_1字符集。 DB字段的類型爲NVARCHAR(200)。 – 2012-07-13 01:53:40