import java.util.regex.Matcher;import java.util.regex.Pattern;String str="o中文o";String pattern="";Pattern p=null;Matcher m = null;//中文字碼範圍pattern="[\u4e00-\u9fa5]";p=Pattern.compile(pattern);m=p.matcher(str);while(m.find()){ System.out.println(m.group());}
Archive for the ‘網站架設’ Category
Java JSP 正規式取出中文字
5 六月, 2009Java JSP 讀取UTF-8檔案
4 六月, 2009以下程式不考慮UTF-8 BOM的問題

import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;File fn=new File("utf8.txt");FileInputStream fis = new FileInputStream(fn);//指定utf-8編碼BufferedReader br = new BufferedReader( new InputStreamReader( fis,"utf-8" ) );String file_str_append="";String file_str="";while((file_str_append=br.readLine())!=null){ file_str+=file_str_append;}br.close();fis.close();//將utf-8所有檔案內容輸出System.out.println(file_str);
中央氣象局 RSS 解析正規式 Regex
1 五月, 2009<%@page contentType="text/html; charset=utf-8" errorPage=""%><%@page import="java.util.regex.Pattern"%><%@page import="java.util.regex.Matcher"%><%out.clear();%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Parse Central Weather Demo</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><%String str="";String pattern="^([\\D]+)\\d{2}/\\d{2}\\s([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s(\\d{1,3})%\\((\\d{2}/\\d{2})\\s(\\d{2}:\\d{2})[\\D]+\\)$";Pattern p=null;Matcher m=null;%> 台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)<br /><%str=" 台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)";pattern="^[\\D]+\\d{2}/\\d{2}\\s([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s*(\\d{1,3})%\\((\\d{2}/\\d{2})\\s(\\d{2}:\\d{2})[\\D]+\\)$";p = Pattern.compile(pattern);m = p.matcher(str.trim());if(m.find()){ for (int i = 1; i <= m.groupCount(); i++) { out.println("group(" + i + "):" + m.group(i)+"<br />"); } m.reset();}%><hr />明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0% <br /><%str="明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0% ";pattern="^([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s*(\\d{1,3})%$";p = Pattern.compile(pattern);m = p.matcher(str.trim());if(m.find()){ for (int i = 1; i <= m.groupCount(); i++) { out.println("group(" + i + "):" + m.group(i)+"<br />"); } m.reset();}%><hr />05/02 溫度:22 ~ 28 晴時多雲<%str="05/02 溫度:22 ~ 28 晴時多雲";pattern="^(\\d{2}/\\d{2})\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s([\\D]+)$";p = Pattern.compile(pattern);m = p.matcher(str.trim());if(m.find()){ for (int i = 1; i <= m.groupCount(); i++) { out.println("group(" + i + "):" + m.group(i)+"<br />"); } m.reset();}%></body></html>


執行結結果:

台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)
group(1):今晚至明晨
group(2):晴時多雲
group(3):22 ~ 24
group(4):0
group(5):05/01
group(6):16:30


明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0%
group(1):明日白天
group(2):晴時多雲
group(3):24 ~ 28
group(4):0


05/02 溫度:22 ~ 28 晴時多雲group(1):05/02
group(2):22 ~ 28
group(3):晴時多雲




備註:中央氣象局的RSS2.0並不是完全符合W3C的標準,且資料呈現不夠有條理,不易被解析
開發有中文內容的專案要考慮的事情
30 四月, 2009跟一個美工人員說目前的專案要有中文,

美工會考慮有沒有適合的中文字型。


跟一個程式人員說目前的專案要有中文,

程式人員會考慮會不會有中文衝碼。


跟一個資料庫管理人員說目前的專案要有中文,

資料庫管理人員會考慮資料儲存是否要用Unicode儲存中文。


跟一個企劃人員說目前的專案要有中文,

企劃人員會考慮內容是否能夠因為中文而引人注目。


跟老闆說目前的專案要有中文,

老闆會考慮什麼時候開始專案會開始賺錢,有沒有中文都沒關係
。
Win32 PHP5 ODBC To Access Demo
27 四月, 2009//設定ODBC來源,使用真實檔案路徑$dblink_id = odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\db.mdb","mdb id","mdb pw" ) or die ("db error");//sql式,選出id的欄位$sql='SELECT id FROM ur_table';if ($dblink_id) { //執行sql $res=odbc_exec($dblink_id,$sql); if($res) { //初始陣列 $arr=array(); //odbc_fetch_row不會回傳陣列,所以必須自行轉置,並指定使用hash的方式推入陣列 while($list=odbc_fetch_array($res,ODBC_ASSOC)){ array_push($arr,$list); } for( $i=0;$i<count($arr);$i++){ //從陣列中取值的方式$arr[陣列索引].[欄位名稱] echo 'id:'.$arr[$i]['id']."\n"; } } else{ echo 'odbe_exec error'."\n"; }}else{ echo 'db link error'."\n";}
JSP 強制下載檔案
10 四月, 2009<%@page import="java.util.ArrayList"%><%@page import="java.io.OutputStream"%><%@page import="java.io.FileInputStream"%><%@page import="java.util.Date"%><%@page import="java.net.URLEncoder"%><%@page import="com.pcyi.walkone.DAO.Verify"%><%@page import="org.hibernate.Session"%><%out.clear();//要給clinet下載時顯示的名字String fileName = "clinet.txt";fileName=URLEncoder.encode(fileName, "utf-8");response.setHeader("Content-Disposition","attachment; filename=" + fileName );String f_path="server_file.txt";FileInputStream fis = new FileInputStream( application.getRealPath(f_path));OutputStream os=response.getOutputStream();byte byteRead;while(-1 != (byteRead = (byte)fis.read())) { //文字檔UNIX換行轉PC換行 if(byteRead=='\n'){ os.write('\r'); } os.write(byteRead);}os.close();if (fis != null) { response.setStatus(200); response.flushBuffer(); fis.close();}%>
MySQL新增使用者與與使用者相同名稱的資料庫
31 三月, 2006GRANT ALL PRIVILEGES ON `new_user`.* TO ‘new_user‘@’localhost’ IDENTIFIED BY ‘new_user_password’;
FLUSH PRIVILEGES;
WinXP Pro x86+MySQL 5.0.19+phpMyAdmin 2.8.0.2+Apache2 2.0.55+PHP 5.1.2
31 三月, 20062006/03/31 13:28
此環境應該是目前自己才能架設的因為所有軟體的版本是20060330官方釋出Win32的最新版本,租用虛擬主機以及直接安裝AppServ的人看看就好
PHP ASCII編碼檔案即時轉碼為UTF-8瀏覽(為了配合MySQL使用UTF-8編碼存取)
為了方便用隨便的編輯器即可撰寫PHP檔案,並且不會有衝碼字許功蓋的問題
CPU P4 2.4GHZRAM DDR 1G作業系統WinXP Pro SP2安裝於NTFS格式硬碟作業系統安裝槽擁有3GB以上的未使用空間有線網路使用亞太Cable 2M/256伺服器平台:MySQL 5.0.19+phpMyAdmin 2.8.0.2+Apache2 2.0.55+PHP 4.4.1
MySQL5phpMyAdminApache2PHP5
基本Windows操作問題請別發問,自行上Google搜尋去本文章所有的埠都是使用預設埠,如果設定與您的不同,請將不同的埠號修改成您自己設定的埠號
(白吃安裝法…略),開啟防火牆80埠
- 下載install版本,不要下載UnZip版本
- 下載完成後解壓縮
- 執行Setup.exe
- 白痴安裝法, 接用預設值
- 當安裝到Please select default character set.,請點選Best Support For Multilingualism
- 當安裝到Please set the Windows options,多勾選Include Bin Directory in Windows PATH
- 當安裝到Please set the security options,於New root password以及Confirm欄位輸入你自訂的密碼並牢記
- 若需要自其他電腦使用本機MySQL,請開啟防火牆3306埠
下載Zip檔,不要下載install的版本
我將Zip檔解開後的存放到C:\php5,php.exe的位置位於C:\php5\php.exe
將php.ini-recommended複製到安裝windows的資料夾下,以我複製後位置是C:\WINDOWS\php.ini-recommended
將php.ini-recommended重新命名為php.ini
修改php.ini
- register_globals = Off
關閉此設定可以提升效能,但程式相容性低,取得標準變數一定要用完整格式,例如$post[‘UserPost’]一定要使用$_POST[‘UserPost’]- extension_dir = "c:/php5/ext/"
我解壓縮到C:\,固設定如上- extension=php_mbstring.dll
extension=php_mysql.dll
將前面的;拿掉- 將php.ini存檔
複製php5ts.dll
將c:\php5\php5ts.dll複製到安裝windows的資料夾之下的system32資料夾下,以我複製後位置是C:\WINDOWS\system32\php5ts.dll
修改Apache2的httpd.confDirectoryIndex index.htm index.html index.html.var index.php index.phtml尋找並修改 DirectoryIndex(預設文件)LoadModule php5_module "C:/php5/php5apache2.dll"
<IfModule mod_mime.c>
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
</IfModule>加入到httpd.conf的最後這樣支援.php以及.phtml檔案,.phps的php原始碼檔案會有彩色語法將httpd.conf存檔,Apache2 Stop然後Start(用restart常常出問題,乾脆用stop+start),如果出錯誤請把錯誤回應上來新增一個純文字文件,內容輸入<?php phpinfo();?>存檔,並且重新命名為index.php,放到Apache2的主目錄(預設htdocs)
使用瀏覽器瀏覽http://localhost:80/index.php ,看是否有php的環境變數輸出,有一堆紫色的畫面寫php安怎安怎的就是成功了
phpmyAdmin解壓縮至Apache2的主目錄下(預設htdocs),我的位置是C:\Apache2\htdocs\phpMyAdmin\新增config資料夾於C:\Apache2\htdocs\phpMyAdmin下,我的位置是C:\Apache2\htdocs\phpMyAdmin\config\設定config.inc.php在Servers按下Add按鈕
- Authentication type
選擇cookie- User for config auth
將已輸入的值刪除,保持淨空- phpMyAdmin control user
輸入最高權限的帳號,預設為root- phpMyAdmin control user password
輸入最高權限帳號的密碼 (安裝MySQL5時所牢記的密碼)- phpMyAdmin database for advanced features
輸入phpmyadmin- 按下Add按鈕
在Features按下Charsets按鈕
Allow charset conversion
勾選此項 Default charset
選擇utf-8 Recoding engine
選擇Auto 按下Update按鈕在Configuration按下Save按鈕將Setup.php產生的config.inc.php複製到phpMyAdmin的根目錄下舉例:C:\Apache2\htdocs\phpMyAdmin\config\config.inc.php複製到C:\Apache2\htdocs\phpMyAdmin\config.inc.php將config資料夾整個刪除舉例:刪除C:\Apache2\htdocs\phpMyAdmin\config\選擇你愛用的語系(我選擇中文 – Chinese traditional (utf-8))輸入最高權限的使用者帳號以及最高權限使用者帳號的密碼,按下登入按鈕建立MySQL5關聯資料存放資料庫配合phpMyAdmin
- 登入phpMyAdmin後的主目錄
- 右方視窗新增資料庫輸入:phpmyadmin
- 右方視窗點選建立
- 右方視窗點選上方SQL
- 複製以下粗體字的SQL指令
#
# 資料表格式: `PMA_bookmark`
#CREATE TABLE `PMA_bookmark` (
`id` int(11) NOT NULL auto_increment,
`dbase` varchar(255) NOT NULL default “,
`user` varchar(255) NOT NULL default “,
`label` varchar(255) NOT NULL default “,
`query` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT=’Bookmarks’ AUTO_INCREMENT=1 ;# ——————————————————–
#
# 資料表格式: `PMA_column_info`
#CREATE TABLE `PMA_column_info` (
`id` int(5) unsigned NOT NULL auto_increment,
`db_name` varchar(64) NOT NULL default “,
`table_name` varchar(64) NOT NULL default “,
`column_name` varchar(64) NOT NULL default “,
`comment` varchar(255) NOT NULL default “,
`mimetype` varchar(255) NOT NULL default “,
`transformation` varchar(255) NOT NULL default “,
`transformation_options` varchar(255) NOT NULL default “,
PRIMARY KEY (`id`),
UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`)
) TYPE=MyISAM COMMENT=’Comments for Columns’ AUTO_INCREMENT=24 ;# ——————————————————–
#
# 資料表格式: `PMA_history`
#CREATE TABLE `PMA_history` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`username` varchar(64) NOT NULL default “,
`db` varchar(64) NOT NULL default “,
`table` varchar(64) NOT NULL default “,
`timevalue` timestamp(14) NOT NULL,
`sqlquery` text NOT NULL,
PRIMARY KEY (`id`),
KEY `username` (`username`,`db`,`table`,`timevalue`)
) TYPE=MyISAM COMMENT=’SQL history’ AUTO_INCREMENT=1 ;# ——————————————————–
#
# 資料表格式: `PMA_pdf_pages`
#CREATE TABLE `PMA_pdf_pages` (
`db_name` varchar(64) NOT NULL default “,
`page_nr` int(10) unsigned NOT NULL auto_increment,
`page_descr` varchar(50) NOT NULL default “,
PRIMARY KEY (`page_nr`),
KEY `db_name` (`db_name`)
) TYPE=MyISAM COMMENT=’PDF Relationpages for PMA’ AUTO_INCREMENT=3 ;# ——————————————————–
#
# 資料表格式: `PMA_relation`
#CREATE TABLE `PMA_relation` (
`master_db` varchar(64) NOT NULL default “,
`master_table` varchar(64) NOT NULL default “,
`master_field` varchar(64) NOT NULL default “,
`foreign_db` varchar(64) NOT NULL default “,
`foreign_table` varchar(64) NOT NULL default “,
`foreign_field` varchar(64) NOT NULL default “,
PRIMARY KEY (`master_db`,`master_table`,`master_field`),
KEY `foreign_field` (`foreign_db`,`foreign_table`)
) TYPE=MyISAM COMMENT=’Relation table’;# ——————————————————–
#
# 資料表格式: `PMA_table_coords`
#CREATE TABLE `PMA_table_coords` (
`db_name` varchar(64) NOT NULL default “,
`table_name` varchar(64) NOT NULL default “,
`pdf_page_number` int(11) NOT NULL default ‘0’,
`x` float unsigned NOT NULL default ‘0’,
`y` float unsigned NOT NULL default ‘0’,
PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`)
) TYPE=MyISAM COMMENT=’Table coordinates for phpMyAdmin PDF output’;# ——————————————————–
#
# 資料表格式: `PMA_table_info`
#CREATE TABLE `PMA_table_info` (
`db_name` varchar(64) NOT NULL default “,
`table_name` varchar(64) NOT NULL default “,
`display_field` varchar(64) NOT NULL default “,
PRIMARY KEY (`db_name`,`table_name`)
) TYPE=MyISAM COMMENT=’Table information for phpMyAdmin’;
- 右方視窗輸入SQL指令的區域將已複製的SQL指令貼上
- 右方視窗點選執行按鈕
PHP5程式實作
新增一個純文字文件,更名為test.php
將以下粗體字程式碼複製貼入test.php內
<?php
mb_internal_encoding("Big5");
mb_http_output(‘UTF-8’);
ob_start(‘mb_output_handler’);
header(‘Content-Type: text/html; charset=UTF-8’);
?>
<html>
<head><title>Big5編碼,使用UTF-8展示</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form method=post>
更改Admin姓名:<input type=text name="UserName" value="">
<input type=submit>
</form>
<?php
/*
— 資料表新增SQL開始— 資料表請於test資料庫,在SQL語法執行處貼上並執行
— phpMyAdmin SQL Dump
— version 2.8.0.2
— http://www.phpmyadmin.net
—
— 主機: localhost
— 建立日期: Mar 31, 2006, 01:56 AM
— 伺服器版本: 5.0.19
— PHP 版本: 4.4.1
—
— 資料庫: `test`
—— ——————————————————–
—
— 資料表格式: `user_value`
—CREATE TABLE `user_value` (
`id` varchar(10) NOT NULL,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) TYPE=InnoDB;—
— RELATIONS FOR TABLE `user_value`:
— `id`
— `users` -> `id`
——
— 列出以下資料庫的數據: `user_value`
—INSERT INTO `user_value` (`id`, `name`) VALUES (‘Admin’, ‘Administrstor’);
— ——————————————————–
—
— 資料表格式: `users`
—CREATE TABLE `users` (
`id` varchar(10) NOT NULL,
`password` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) TYPE=InnoDB;—
— 列出以下資料庫的數據: `users`
—INSERT INTO `users` (`id`, `password`) VALUES (‘Admin’, ‘123’);
—
— 備份資料表限制
——
— 資料表限制 `user_value`
—
ALTER TABLE `user_value`
ADD CONSTRAINT `user_value_ibfk_1` FOREIGN KEY (`id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;— 資料表SQL完畢
*//*
mysql的連線預設字元集若是按照我的設定已經設定為utf-8
所以請不要另外設定
就算強制設定
也是會出錯
所有輸出變數資料都要使用 mb_convert_encoding($str, "Big5","UTF-8")即可轉碼*/
$link_id=mysql_connect("輸入MySQL的主機位置","最高權限管理員帳號","最高權限管理員密碼") or die(‘Could not connect: ‘ . mysql_error());;
mysql_select_db("test") or die(‘Could not select database’);
if(isset($_POST[‘UserName’])){
$sql = "UPDATE `user_value` SET `name` = ‘".$_POST[‘UserName’]."’ WHERE `id`= ‘Admin’;" or die(‘Query failed: ‘ . mysql_error());
if(mysql_query($sql,$link_id)){
echo "Admin姓名已更新為:".mb_convert_encoding($_POST[‘UserName’], "Big5","UTF-8")."<br>";
}
else{
echo "Admin姓名無法更新為:".mb_convert_encoding($_POST[‘UserName’], "Big5","UTF-8")."<br>";
}
}
$sql = ‘SELECT `users` . `id` , `user_value` . `name` FROM `users` INNER JOIN ( `user_value` ) ON `users` . `id` = `user_value` . `id`; ‘ or die(‘Query failed: ‘ . mysql_error());
$result=mysql_query($sql,$link_id);//輸出資料庫內容開始
echo "<table border=1><tr><td>ID</td><td>Name</td></tr>\n";while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<tr>";
foreach ($line as $col_value) {
echo "<td>". mb_convert_encoding($col_value, "Big5","UTF-8")."</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
//輸出資料庫內容結束//釋放資料庫記憶體
mysql_free_result($result);//關閉資料庫連線
mysql_close($link);
?>
<pre>
Big5內文測試
話說從前從前~~~
有位園藝家..擅長種植出世上最翠綠的草地~~
進而得到國王的寵愛~~並封他為"農務大臣"~~
後來農務大臣死後豐功偉績傳到了天堂~~
上帝便昭換農務大臣到天堂幫它種植草地~~
不過農務大臣上天堂後卻再也種不出綠油油的草地了~~為啥為啥為啥???
因為……………
仙草是黑的………………..囧RZ
</pre>
</body>
</html>修改mysql_connect("MySQL主機位置","最高權限管理員帳號","最高權限管理員密碼")
儲存test.php
將test.php內提到測試用的資料表建好
將test.php放在Apache2的主目錄下(預設htdocs),我的位置是C:\Apache2\htdocs\test.php
使用瀏覽器瀏覽http://localhost:80/test.php
按右鍵檢視網頁編碼是否為UTF-8
在輸入文字方塊內輸入一些中文例如:許功蓋並送出資料測試
送出資料後中文顯示正常者,恭喜你成功了!
送出資料後中文顯示錯誤者,請你自己Debug
若是我文章有寫錯請回覆,想問問題的就別回了,想討論的歡迎您