2017年3月26日 星期日

MS SQL 2008 儲存 Unicode 字元之解決

以 JSP + MS SQL 為例
將儲存欄位設定為 nchar 或 nvarchar 等 UNICODE 資料型態應該就可以了。

1.定義 DB 之SCHEMA 必須為 nvarchar

 

2.網頁編碼須為 utf-8
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>


3.Database DAO 必須以 UTF-8 連線
    <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.connection.url">jdbc:sqlserver://127.0.0.1:1433;databaseName=myDB2;useUnicode=true;characterEncoding=UTF-8;</property>



參考資料:
原文出處:  
http://rogercode.blogspot.tw/2015/07/sql-serversql-server.html

[SQL Server]修改SQL Server資料庫字元編碼

目前網頁幾乎都用萬國碼UTF-8 and Unicode
若希望將資料庫的定序名稱更改為時,卻無法使用SQL Server Enterprise Manager直接修改,
可以使用下列語法修改:



ALTER DATABASE [DBName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [DBName] COLLATE SQL_Latin1_General_CP1_CI_AS
ALTER DATABASE [DBName] SET MULTI_USER WITH ROLLBACK IMMEDIATE

PS.[DBName]為您的資料庫名稱。

因為在改定序名稱時必須先鎖定資料庫
第一行要先將資料庫設定為SINGLE_USER(同一時間只能有一位使用者存取資料庫)
第二行修改定序名稱
第三行將資料庫改回 MULTI_USER
另外要執行這些指令值須先將所在的資料庫切換到master下。

註:
"Chinese_Taiwan_Stroke_CI_AS"為BIG5
"SQL_Latin1_General_CP1_CI_AS"為UTF8

沒有留言:

Java 不同編碼字串, 其字串長度大小計算

以 Java 開發專案, 在 DAO 寫入資料庫時, 常遇到JAVA 字串與資料庫編碼不一致, 有時會產生字串過長,導致無法寫入資料庫的情況. 這時就要在入庫前, 先驗證 JAVA 編碼字串是否超出資料庫欄位長度 JAVA 依 不同編碼, 其長度是不一樣的 如: ...