SugarCRM中文問題

點選公司新增聯絡人或機會
進入新增畫面如果選擇其他中文名稱的公司
公司名稱會變成亂碼
請問要如何解決呢?
Thanks

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=1791

評論

  • edited 七月 2006
    我使用 4.2.1 並沒有發現這個問題,請詳細描述你的操作環境與操作步驟。
  • edited 七月 2006
    安裝 4.2.1與 4.2d都發現有這問題
    作業系統 FreeBSD6.1R , PHP5.1.4 , Mysql5.1.11
    基本操作在中文部分都沒問題
    但是若是使用中文公司名稱
    點選像是機會->新增機會
    在公司名稱的地方選擇中文的公司名
    textBox自動填入的內容會出現亂碼
    像是 測試
  • edited 七月 2006
    你使用的是我在下載區提供的版本嗎?

    我在下面環境測試時可以正確選擇中文名稱的公司:
    Fedora Core 5 + PHP 5.1.4 + MySQL 5.0.18
  • edited 七月 2006
    是這邊下載的沒錯
    我PM給你網址
    幫忙測試一下
    Thanks!
  • edited 七月 2006
    你的環境測試確實有這個問題,但是我無法在自己的環境重現這個問題;兩個的主要差別是一個使用 MySQL 5.1.x ,一個使用 MySQL 5.0.x ,也許試著調降資料庫版本試試。
  • edited 七月 2006
    請問Kiang你的Apache是哪個版本?
  • edited 七月 2006
    ziyun 寫道:
    安裝 4.2.1與 4.2d都發現有這問題
    作業系統 FreeBSD6.1R , PHP5.1.4 , Mysql5.1.11
    基本操作在中文部分都沒問題
    但是若是使用中文公司名稱
    點選像是機會->新增機會
    在公司名稱的地方選擇中文的公司名
    textBox自動填入的內容會出現亂碼
    像是 測試
    我也有這個問題
    我系統的是
    Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.1.4 PHP/4.3.10-16 MySQL/4.0.24

    軟體版本
    SugarCRM 4.2.1 Latest Stable

    語系包
    Traditional Chinese language pack for SugarSuit 4.2 Beta

    那一個欄位只能用選的,選完後把亂碼改成正確的反而不能存檔

    不過亂碼存檔後的資料是正常的

    會不會是php.ini設定檔的問題呢?

    這陣子讓crm軟體亂碼旳問題搞的有點頭痛
  • edited 七月 2006
    我是使用 Apache/2.2.0 ,還無法確定狀況
  • edited 七月 2006
    另外發現
    新增電話時
    下面"安排中"區塊
    裡面的中文全部都是亂碼
  • edited 七月 2006
    我不確定我的環境為何無法重現你們提出的狀況,你們的用戶端環境為何?
  • edited 七月 2006
    用戶端 是使用 XP SP2 + IE6.0
  • edited 七月 2006
    Apache換了幾個版本 1.3->2.2 都還是ㄧ樣
    會不會是JavaScript的問題?
  • edited 七月 2006
    不確定是否為環境問題,但是在我的電腦( Windows XP SP2 )中,無論是使用 Firefox 1.5.x 或是 IE 6.0 都不會發生類似狀況;下面這個方式不知道會不會影響:

    在 IE 中, 工具》網際網路選項》進階》瀏覽》永遠將URL傳送成 UTF-8 ,這個項目我是啟用的,不過試著關閉也沒發現異常狀況。

    也許換個瀏覽器試試: http://moztw.org

    如果這些都不行,那麼可能你的環境設定有些預設值會干擾程式吧,像是網頁預設編碼等等。
  • edited 七月 2006
    試了Firefox 也是ㄧ樣~"~
    檢查了幾遍環境設定,並沒有發現有設定關於編碼的設定
    設定檔都是用預設值

    測試一下增加DefaultCharset=utf8
    還是沒效果..><
  • edited 七月 2006
    hi,ziyun:
    我發現我們兩個都遇到相同的問題耶
    相信我們都用同一個版本

    問題應該是出在程式上面
    因為我那台是用Debian架的Apache2.x+MySQL4.x+PHP4
    我也曾經用Ubuntu 架過Apache2.x+MySQL5.x+PHP5

    三種環境都跑出相同的問題
    新增機會:公司名稱變亂碼
    新增電話:下方資訊欄位變亂碼

    朝著抓程式bug去著手吧
  • edited 七月 2006
    剛剛去官方網站使用中文測試
    發現也有這問題
    公司名稱變亂碼 新增進去後看到的卻是正常
    只好k source code 看看了
    我猜有可能是 encode function 部分的問題
  • edited 七月 2006
    我剛才把所有的ISO-8859-1改成UTF-8,發現沒用....呵呵

    請教一下跟這些顯示相關的"關鍵字"(encode function?)為何

    在linux用指令抓檔案裡的字串速度還蠻快的

    grep -i preg_match */*/*.* |nl > test

    這個指令就能把preg_match相關的字串資訊輸出,增加debug的效率
  • edited 七月 2006
    在彈出視窗後,其實文字資料就寫在彈出視窗的網頁原始碼中,使用 javascript 處理 utf-16 編碼資料。

    以我的測試環境為例,我新增了一個顧客名稱為"中文測試",在新增機會要選擇客戶時,彈出視窗會有下面這樣一行落落長的資料:
    var associated_javascript_data = ...

    其中有下面兩個相關項目:
    "NAME":"\u4e2d\u6587\u6e2c\u8a66"
    "ENCODED_NAME":"\u4e2d\u6587\u6e2c\u8a66
    

    這應該就是四個中文字對應的 utf-16 代碼,這是我所看到的部份。
  • edited 七月 2006
    同樣的"中文測試"我這邊看到的是

    "ENCODED_NAME":"\u00e4\u00b8\u00ad\u00e6\u0096\u0087\u00e6\u00b8\u00ac\u00e8\u00a9\u00a6"

    好像被拆開了....
  • edited 七月 2006
         1	include/SubPanel/subpanels.txt:				// use the 'ENCODED_NAME' key to get the data
         2	include/SubPanel/subpanels.txt:                                 'varname'=>'ENCODED_NAME',
         3	include/SubPanel/subpanels.txt:                                 'varname'=>'ENCODED_NAME',
         4	modules/Accounts/Account.php:		$temp_array["ENCODED_NAME"]=$this->name;
         5	modules/Accounts/Account.php://		$temp_array["ENCODED_NAME"]=htmlspecialchars($this->name, ENT_QUOTES);
         6	modules/Bugs/Bug.php:	$the_array['ENCODED_NAME']=$this->name;
         7	modules/Cases/Case.php:		$temp_array['ENCODED_NAME'] = $this->name;
         8	modules/Contacts/Contact.php:		$temp_array['ENCODED_NAME'] = $this->name;
         9	modules/Leads/Lead.php:		$temp_array['ENCODED_NAME']=$this->name;   
        10	modules/Opportunities/Opportunity.php:	    $temp_array["ENCODED_NAME"]=$this->name;
        11	modules/Opportunities/Opportunity.php://		$temp_array["ENCODED_NAME"]=htmlspecialchars($this->name, ENT_QUOTES);
        12	modules/Prospects/Prospect.php:        $temp_array["ENCODED_NAME"]=$this->first_name.' '.$this->last_name;
        13	modules/Releases/Release.php:        $temp_array["ENCODED_NAME"]=$this->name;
        14	modules/Releases/Release.php://	$temp_array["ENCODED_NAME"]=htmlspecialchars($this->name, ENT_QUOTES);
        15	modules/Schedulers/Scheduler.php:        $temp_array["ENCODED_NAME"]=$this->name;
    
         1	include/ListView/ListView.php:		$associated_javascript_data = '<script type="text/javascript">' . "\n"
         2	include/ListView/ListView.php:			. 'var associated_javascript_data = '
         3	include/ListView/ListView.php:		$this->xTemplate->assign('ASSOCIATED_JAVASCRIPT_DATA', $associated_javascript_data);
         4	include/Popups/Popup_picker.php:					for(the_key in associated_javascript_data[document.MassUpdate.elements[i].value]) {
         5	include/Popups/Popup_picker.php:						temp_string += '\"' + the_key + '\":\"' + associated_javascript_data[document.MassUpdate.elements[i].value][the_key] + '\",'; 
         6	include/Popups/Popup_picker.php:				associated_javascript_data[the_key] = temp_array[the_key];
         7	include/javascript/popup_helper.js:	var associated_row_data = associated_javascript_data[id];
         8	modules/ACLRoles/ListView.html:{ASSOCIATED_JAVASCRIPT_DATA}
         9	modules/ACLRoles/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        10	modules/ACLRoles/popup.tpl:{$ASSOCIATED_JAVASCRIPT_DATA}
        11	modules/Accounts/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        12	modules/Bugs/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        13	modules/Calls/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        14	modules/CampaignLog/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        15	modules/Cases/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        16	modules/Contacts/Address_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        17	modules/Contacts/Email_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        18	modules/Contacts/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        19	modules/Documents/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        20	modules/Emails/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        21	modules/Emails/email_popup_helper.js:							the_value = associated_javascript_data[id][the_key.toUpperCase()];
        22	modules/Emails/email_popup_helper.js:	var associated_row_data = associated_javascript_data[id];
        23	modules/Employees/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        24	modules/Leads/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        25	modules/Meetings/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        26	modules/Notes/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        27	modules/Opportunities/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        28	modules/Project/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        29	modules/ProjectTask/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        30	modules/ProspectLists/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        31	modules/Prospects/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        32	modules/Releases/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        33	modules/Tasks/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
        34	modules/Users/Popup_picker.html:{ASSOCIATED_JAVASCRIPT_DATA}
    
  • edited 七月 2006
    我好像看到問題了,請把 php 的 mbstring 這個外掛裝起來
  • edited 七月 2006
    太感謝了,又解決了一個問題 :)

    下面是php.ini的原始檔
    [mbstring]
    ; language for internal character representation.
    ;mbstring.language = Japanese
    
    ; internal/script encoding.
    ; Some encoding cannot work as internal encoding.
    ; (e.g. SJIS, BIG5, ISO-2022-*)
    ;mbstring.internal_encoding = EUC-JP
    
    ; http input encoding.
    ;mbstring.http_input = auto
    
    ; http output encoding. mb_output_handler must be
    ; registered as output buffer to function
    ;mbstring.http_output = SJIS
    
    ; enable automatic encoding translation accoding to
    ; mbstring.internal_encoding setting. Input chars are
    ; converted to internal encoding by setting this to On.
    ; Note: Do _not_ use automatic encoding translation for
    ;       portable libs/applications.
    ;mbstring.encoding_translation = Off
    
    ; automatic encoding detection order.
    ; auto means
    ;mbstring.detect_order = auto
    
    ; substitute_character used when character cannot be converted
    ; one from another
    ;mbstring.substitute_character = none;
    
    ; overload(replace) single byte functions by mbstring functions.
    ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
    ; etc. Possible values are 0,1,2,4 or combination of them.
    ; For example, 7 for overload everything.
    ; 0: No overload
    ; 1: Overload mail() function
    ; 2: Overload str*() functions
    ; 4: Overload ereg*() functions
    ;mbstring.func_overload = 0
    

    我修改的部份參考
    http://dob.tnc.edu.tw/themes/old/showPage.php?s=1372&t=79

    這裡是我修改後的部份
    [mbstring]
    ; language for internal character representation.
    ;mbstring.language = Japanese
    
    ; internal/script encoding.
    ; Some encoding cannot work as internal encoding.
    ; (e.g. SJIS, BIG5, ISO-2022-*)
    mbstring.internal_encoding = BIG5
    
    ; http input encoding.
    mbstring.http_input = auto
    
    ; http output encoding. mb_output_handler must be
    ; registered as output buffer to function
    mbstring.http_output = utf8
    
    ; enable automatic encoding translation accoding to
    ; mbstring.internal_encoding setting. Input chars are
    ; converted to internal encoding by setting this to On.
    ; Note: Do _not_ use automatic encoding translation for
    ;       portable libs/applications.
    ;mbstring.encoding_translation = Off
    
    ; automatic encoding detection order.
    ; auto means
    mbstring.detect_order = auto
    
    ; substitute_character used when character cannot be converted
    ; one from another
    mbstring.substitute_character = none;
    
    ; overload(replace) single byte functions by mbstring functions.
    ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
    ; etc. Possible values are 0,1,2,4 or combination of them.
    ; For example, 7 for overload everything.
    ; 0: No overload
    ; 1: Overload mail() function
    ; 2: Overload str*() functions
    ; 4: Overload ereg*() functions
    ;mbstring.func_overload = 0
    
  • edited 七月 2006
    太好了, 修改 php.ini後也正常了
    謝謝大家的幫忙 :)
Sign In or Register to comment.