在Oracle中,經常把字段的類型設定成varchar2。
以前都是認為每一個中文字元都是占用2個位元組,即varchar2(30)隻能存放15個中文或30個英文。
今天偶然發現,這個其實和Oracle的配置是相關的,用以下語句查詢:
select * from v$nls_parameters t where t.PARAMETER='NLS_CHARACTERSET';
可以查詢到目前資料庫的字元集,如果value=GB2312,那麼一個漢字占用2個位元組,如果value=AL32UTF8,那麼一個漢字占用3個位元組。
在Java中可以使用以下方式取得string的長度:

private int getLength(NcsTextField t) {
try {
int iLength = new String(t.getText().getBytes("UTF8"),"iso-8859-1").length();
return iLength;
} catch (Exception e) {
return t.getText().length();
}
}
這樣取得的一個漢字占3個位元組,
如果把UTF8換成GB2312則一個漢字占2個位元組
本文轉自永春部落格園部落格,原文連結:http://www.cnblogs.com/firstyi/archive/2007/09/18/897542.html,如需轉載請自行聯系原作者