2015年4月28日 星期二

在IE傳遞get參數中文遇到亂碼

方法一
https://www.peterdavehello.org/2013/10/%E5%9C%A8ie%E5%82%B3%E9%81%9Eget%E5%8F%83%E6%95%B8%E4%B8%AD%E6%96%87%E9%81%87%E5%88%B0%E4%BA%82%E7%A2%BC/

昨天被丟了一個問題:同一隻PHP程式在Chrome/Firefox丟中文參數沒問題, 在IE就會亂碼?
code大概長這樣, 主要是把傳入的參數存入db裡面, db用的是utf-8的編碼
<!php
$con = mysql_connect("127.0.0.1","id","pw");
mysql_select_db("test", $con);
mysql_query("set names 'utf8'");
$msg = $_GET['msg'];
$sql = "INSERT INTO `db` . `table` (`column`) VALUES ('" . $msg . "')";
mysql_query($sql,$con);
mysql_close($con);
問題其實是出在IE傳遞參數時會以ANSI來編碼(即便網頁編碼是UTF-8), 自然會出現亂碼的問題, 基於現在UTF-8是主流, 所以可以在使用傳入的參數之前使用PHP內建的mb_detect_encoding做這樣的處理:
$encode = mb_detect_encoding($msg, array ("UTF-8", "BIG5", "GB2312"));
if ($encode && $encode != 'UTF-8') {
    $msg = iconv ( $encode, "UTF-8", $msg );
}
{ “UTF-8″, “BIG5″, “GB2312″ } 這段可以依序換成要被識別的編碼, 在編碼可以辨識(有被列入)且不是UTF-8的情況下會用PHP內建的iconv來做轉換的動作, 就可以解決這樣的問題啦~

方法二
http://www.tdes.chc.edu.tw/works/computer/study/internet/internet-02.htm

當您使用瀏覽器上網時,有時會發現無法瀏覽以中文名命名的網頁或者無法下載以中文命名的檔案,這跟使用微軟 Internet Explorer(簡稱IE)瀏覽器的設定有一點點的關係,按下以下的連結測試一下吧!
按下上述的連結會另開新的瀏覽視窗,如果您可以看到裡面的內容,則不用進行以下設定;如果您所看到的是很抱歉!找不到這個網頁……,請您進行以下的設定操作:
如果您的作業系統是 Windows XP,預設是無法瀏覽以中文名命名的網頁及無法下載以中文命名的檔案,所以請點選上述的網址進行測試與操作。
(1) 開啟 瀏覽器 按下功能表上的 [工具] → [網際網路選項]

(2) 點選 進階 
(3) 永遠將 URL 傳送成 UTF-8 ,不要打勾
(4) 按下確定鈕。
 

 
以上的設定完畢後,將瀏覽器關閉後再重新開啟瀏覽器,應該就可以瀏覽以中文命名的網頁內容了。

2015年4月23日 星期四

tiptop 表格cell 動態指定顏色

http://www.bkjia.com/HTML5/477324.html

使用测试系统TIPTOP GP3.0
颜色的设置分为单身颜色和单头颜色的设置:
一、单身颜色:
1.首先MAIN函数之前定义一个数组
例如:
[html]
DEFINE ga_color     DYNAMIC ARRAY OF RECORD
        c01   STRING,c02   STRING,
        c03   STRING,c04   STRING,
        c05   STRING,c06   STRING,
        c07   STRING,c08   STRING,
        c09   STRING,c10   STRING,
        c11   STRING,c12   STRING
     END RECORD
2._bp(p_ud) 函数里面:
##setCellAttributes( attarr ARRAY OF RECORD )
##Defines decoration attributes for each cell. (定义每个单元格的属性)
  BEFORE DISPLAY   ##显示之前设置属性
    CALL DIALOG.setCellAttributes(ga_color)
3._fill函数里面
  首先 CALL ga_color.clear()   #清空
  然后 FOREACH 里面 判断并赋值(可以对多个栏位,也可以是某一个栏位)
[html]
IF g_ta_gja[g_cnt].tc_gja10 >5 AND g_ta_gja[g_cnt].tc_gja10<10 THEN 
   LET ga_color[g_cnt].c01 =""
   LET ga_color[g_cnt].c02 =""
   LET ga_color[g_cnt].c03 =""
   LET ga_color[g_cnt].c04 =""
   LET ga_color[g_cnt].c05 =""
   LET ga_color[g_cnt].c06 =""
   LET ga_color[g_cnt].c07 =""
   LET ga_color[g_cnt].c08 =""
   LET ga_color[g_cnt].c09 =""
   LET ga_color[g_cnt].c10 ="red"
    LET ga_color[g_cnt].c11 =""
    LET ga_color[g_cnt].c12 =""
 ELSE IF g_ta_gja[g_cnt].tc_gja10>10 THEN
   LET ga_color[g_cnt].c01 =""
   LET ga_color[g_cnt].c02 =""
   LET ga_color[g_cnt].c03 =""
   LET ga_color[g_cnt].c04 =""
   LET ga_color[g_cnt].c05 =""
   LET ga_color[g_cnt].c06 =""
   LET ga_color[g_cnt].c07 =""
   LET ga_color[g_cnt].c08 =""
   LET ga_color[g_cnt].c09 =""
   LET ga_color[g_cnt].c10 ="blue"
    LET ga_color[g_cnt].c11 =""
    LET ga_color[g_cnt].c12 =""
ELSE
   LET ga_color[g_cnt].c01 =""
   LET ga_color[g_cnt].c02 =""
   LET ga_color[g_cnt].c03 =""
   LET ga_color[g_cnt].c04 =""
   LET ga_color[g_cnt].c05 =""
   LET ga_color[g_cnt].c06 =""
   LET ga_color[g_cnt].c07 =""
   LET ga_color[g_cnt].c08 =""
   LET ga_color[g_cnt].c09 =""
   LET ga_color[g_cnt].c10 ="green blod"
    LET ga_color[g_cnt].c11 =""
    LET ga_color[g_cnt].c12 =""
 END IF 
 END IF
效果图如下图片:
 

二、单头颜色:
1.可以直接在画面档(per档)或者4gl档里面设置颜色
例如:
<1>【per档设置】gja02 = gja02,COLOR=GREEN;(color)
<2>【per档设置】ima26 = ima26,COLOR = RED WHERE ima26>1000;
<3>【per档设置】DATEEDIT  tc_gja03 = tc_gja03,COLOR=GREEN,REVERSE;
<4>【4gl档设置】DISPLAY p_ima01 TO ima01 ATTRIBUTE(BOLD,GREEN)
<5>【4gl档设置】DISPLAY BY NAME g_ima.*  ATTRIBUTE(REVERSE,BOLD,GREEN)
<6>【4gl档设置】CALL cl_set_comp_font_color("ima01,ima02a","RED")
<7>【per档设置】GRID (fontpitch=FIXED)
fontpitch:这个属性定义字符的字体类型作为固定或变量在使用默认字体。
COLOR:
【用途】
The COLOR attribute defines the foreground color of the text displayed by a form element.
【说明】
1.color-name can be: BLACK, BLUE, CYAN, GREEN, MAGENTA, RED, WHITE, and YELLOW.
2.For backward compatibility, color-name can be combined with an intensity keyword: REVERSE, LEFT, BLINK, and UNDERLINE.
COLOR  WHERE :
【用途】
The COLOR WHERE attribute defines a condition to set the foreground color dynamically.
【说明】
1.color-name can be: BLACK, BLUE, CYAN, GREEN, MAGENTA, RED, WHITE, and YELLOW.
2.color-name can also be an intensity keyword: REVERSE, LEFT, BLINK, and UNDERLINE.
3.boolexpr defines a Boolean expression with a restricted syntax.
4.The Boolean expression is automatically evaluated at runtime to check when the color attribute must be set.
效果图如下几张图片:
 
 

2015年4月7日 星期二

Reporting Service Execution History Log

/****** SSMS 中 SelectTopNRows 命令的指令碼  ******/
SELECT [TimeStart],replace([UserName],'WIN2K3SRVSQL\','') UserName,Name,[Parameters]
  FROM [ReportServer].[dbo].[ExecutionLogStorage],[ReportServer].[dbo].Catalog
 WHERE UserName not like '%Administrator%'
   AND ReportID = ItemID
 ORDER BY 1 DESC