999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

水力發電廠監控系統小語種軟件國際化策略

2021-05-19 01:13:44鮑艷香
西北水電 2021年2期
關鍵詞:國際化信息

孫 毅 ,鮑艷香

(1.南京南瑞水利水電科技有限公司,南京 210003;2.水利部水文儀器及巖土工程儀器質量監督檢驗測試中心,南京 210012)

0 前 言

隨著這些年中國水力發電廠監控技術的日趨成熟,越來越多的國外水力發電廠項目開始使用國內水力發電廠監控產品。與2000—2010年已實施過的部分國外項目不同,新的需求不再僅是單一的英文版軟件,法文、西班牙文、葡萄牙文等其他語言版本軟件需求也逐漸出現。為了滿足小語種國際化項目的需求,南京南瑞水利水電科技有限公司開發了新一代國際化水力發電廠監控軟件產品(SC2000)。早期的水力發電廠監控軟件因為只需要支持中文及英文,使用了“GBK”字符集,該字符集可支持所有的簡體中文、繁體中文、英文等字符,但無法兼容某些小語種中的一些特殊字符,如:ê、、?等等。實際上,在現在的軟件開發中,更為廣泛使用的是“UTF-8”字符集,這一字符集可以兼容幾乎所有的字符,包括小語種中的各種特殊字符。因此,如果需要兼容各種小語種,還需將軟件使用的字符集更改為“UTF-8”字符集。然而,傳統的軟件前后臺采用了不同的編程語言,前臺為JAVA語言,后臺為C語言,兩者之間的各類信息傳輸都使用了“GBK”字符集作為編碼模式,如果僅修改其中某一方的編碼方式,會造成前后臺字符集的不兼容,導致軟件出現大量亂碼。并且原來的軟件中,大量配置文件也使用了“GBK”編碼,直接對軟件編碼方式進行修改,會造成無法兼容以前的項目,對后續的維護工作造成嚴重的影響,需進行軟件版本的分支。

1 軟件國際化及字符集

1.1 何為軟件國際化

軟件國際化最終需要實現的目標是:在不對軟件進行重新編碼或者替換運行文件的基礎上,可以通過只修改一個運行參數,或者直接在界面上選擇的方式,切換軟件界面上顯示的語言。一般實現目標的策略:在軟件中所有需要出現文本顯示的地方,都避免在軟件中采用硬編碼,通過鍵值對查找策略來實現,即在代碼中需要顯示文本的地方,通過某一個“key”,去找出資源文件中對應的“value”,最終把“value”顯示出來。“key”是固化在軟件源代碼中,而獲取 “value”可以根據配置不同,去獲取資源文件中不同的語言文字。

總體來說,軟件國際化是一套成熟的軟件所必備的體系,對軟件的可維護性、可擴展性都有極大的幫助,比如避免在需要修改軟件語言時,需要去對軟件進行重寫編碼。

1.2 字符集

字符是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。而字符集是多個字符的集合,字符集種類較多,每個字符集包含的字符個數不同,常見字符集有ASCII字符集、GBK字符集、UTF-8字符集、UTF-16字符集、ISO-8859-1字符集。在列出的5種字符集中,除ASCII字符集外,其余均支持簡體漢字。計算機要準確的處理各種字符集文字,就需要進行字符編碼,以便計算機識別和存儲各種文字。其中,ASCII字符集包含所有的基本計算機字符,包括阿拉伯數字、英文大小寫字母,部分特殊字符如:!@#$%^&*()-+=;’,.等;GBK字符集包含所有的中文字及所有的ASCII字符;UTF-8字符集包含所有的中文字符,各類小語種的特殊字符及所有的ASCII字符。這些字符集中,所有ASCII字符(半角英文字母及半角標點符號)的編碼方式相同,但漢字及ê、、?等特殊字符的編碼方式有區別。為了更清晰地說明編碼方式引起的字節信息差異,本文結合以下代碼段進行分析:

System.out.println(“UTF-8:”+ byteArray2BinaryString(“中”.getBytes(“utf8”)));

System.out.println(“GBK:”+ byteArray2BinaryString(“中”.getBytes(“gbk”)));

這段代碼實現的是對于漢字“中”分別進行UTF-8和GBK編碼。

運行結果如下:

UTF-8: 11100100 10111000 10101101

GBK: 11010110 11010000

運行結果顯示,“中”這個字在UTF-8編碼方式下,其2進制表示為:

11100100 10111000 10101101

而“中”這個字在GBK編碼方式下,其2進制表示為:

11010110 11010000

可以看出,同一漢字在2個不同的字符集中,其字節碼是不一樣的,甚至長度都不一樣。所以,要想讓其它程序識別一段字節碼所表示字符,首先要明確其使用的是哪一種字符集,如果編碼方與解碼方使用的字符集不同,會出現“亂碼”情況。

若軟件需要兼容法文、西班牙文、葡萄牙文等小語種,則在前端程序中必須使用UTF-8字符集。對于以GBK字符集為基礎的現有軟件,如何在滿足兼容性要求的前提下實現字符集的轉換,是解決軟件增加小語種兼容問題的關鍵所在。

1.3 UTF-8與GBK的交集

根據各類型字符集的范圍可以推斷,雖然UTF-8字符集和GBK字符集存在顯著差異,但是它們的ASCII字符部分的編碼方式一致。可以采用下述代碼段進行分析驗證:

System.out.println(“UTF-8: ”+ byteArray2BinaryString(“A”.getBytes(“utf8”)));

System.out.println(“GBK: ”+ byteArray2BinaryString(“A”.getBytes(“gbk”)));

這段代碼實現的是對于英文字符“A”分別進行UTF-8和GBK編碼。

運行結果如下:

UTF-8: 1000001

GBK: 1000001

運行結果顯示,“A”這個字符在UTF-8編碼方式和GBK編碼方式下,其2進制表示均為:1000001。說明上述2種字符集存在相通部分(ASCII部分),并存在利用其來實現GBK與UTF-8字符集之間信息交互的可能性。因此,不需要對前后臺所有的程序全部進行字符集修改,僅需修改前臺程序的字符集,可實現既保持軟件兼容性又確保軟件改動最小的目標。

2 兼容策略

2.1 策略分析

要判斷是否僅修改前臺程序的字符集,首先要分析前后臺程序之間有哪些需要交互的文本信息,具體如下:

(1) 監控簡報信息,主要包括:開關量動作信息、模擬量越限信息、順控流程信息、節點狀態信息、進程狀態信息、控制操作信息、各類通信程序上報信息等。

(2) 后臺歷史記錄,即監控簡報信息中各類信息的歷史記錄。

(3) 各類前后臺都需要加載的配置文件。

在原系統中上述各類信息均采用GBK編碼方式。針對前后臺程序共用的配置文件,可分2種情況來考慮:① 對于無需進行國際化內容的配置文件,可保留使用GBK字符集,在前臺程序對其進行解析或保存時,依然指定使用GBK字符集即可[1];② 對于含國際化處理的文本信息的配置文件,需改為使用UTF-8字符集,并且通過修改程序邏輯的方式,避免后臺程序直接讀取此類配置文件中的文本內容。針對監控簡報信息及其歷史記錄,需分類進行討論。

最常見的一類為水力發電廠的開關量動作信息、模擬量越限信息。此類信息通常為電氣信號,其原理為:外部設備通過硬接線接入監控系統的PLC,PLC模件通過網絡通信將這些電氣信號上送至上位機,上位機軟件則根據信號的順序在模型庫中對測點模型進行預定義,這些測點的描述會存放在監控系統的上位機模型庫中。原有的告警策略為在后臺程序中直接組織好完整的簡報信息之后發送給前臺進行展示。然而實際上前臺模型庫中本身就存放了測點的描述信息,在后臺直接發布完整的告警信息的策略確實略顯粗糙,實際上只要將測點的ID信息、測值、動作性質等數據發布至前臺,前臺可根據這些信息重新組織出需要展示的簡報[2]。為了避免后臺程序無法解析的小語種特殊字符,采用了后臺程序僅發布測點ID、動作性質、測值等數據,由前臺程序重新組織出最終告警信息的策略,解決了上位機網絡環境中需要多種語言的系統同時存在的難題。

另一類信息為水力發電廠監控系統中的順控流程信息、節點狀態信息、進程狀態信息、控制操作信息、各類通信程序上報信息。此類信息通常為非電量信號,大部分都是通過外部系統通訊上送,或者由后臺程序在系統運行過程中,根據實際需要動態生成的告警信息。此類信息的特點是具有不確定性,大部分信息無法在數據模型中進行預定義。針對此類信號,原有策略為在后臺程序中直接組織好完整的簡報信息之后發送給前臺進行展示,此類信息不含有其它附加信息。由于此類信息無法通過測點信息進行重組,后臺程序不再發送組織好的完整簡報信息,可改為發送根據一套前后臺約定好的策略組織出來的碼值(只使用ASCII字符)。前臺程序收到碼值后,根據前后臺碼值轉換規約(詳見2.2)以及碼值信息對照表解譯出需要展示的信息。

2.2 前后臺碼值轉換規約

流程、通訊類信息需要進行碼值轉換,轉換前需要提前獲得以下幾個要素:

(1) 如何確定此類信息是一條進行了碼值轉換的信息;

(2) 從哪里獲取碼值與文本的對應關系;

(3) 哪些內容需要根據碼值進行轉換。

明確以上要素,可設計出對應的碼值轉換規約[3],具體方法如下:

在信息的開頭,用<[filename]>的格式,來告知前臺文本信息存放的配置文件,其中filename即文件名。因此,開頭“<[”連續的兩個字符,可以作為這是一條需要進行碼值轉換信息的標記。

用<#1.1.1.3.5#>的格式,來告知前臺測點ID。例如其中1.1.1.3.5就是一個測點ID,前臺程序可以根據此ID將之轉換為對應的測點描述。

用<%2,11%>的格式,來告知前臺具體的碼值信息。例如2和11中的2表示碼值的第一級關鍵字,11表示碼值的第二級關鍵字[4]。

如圖1所示,“key”列即為在文章開頭提到過的“key”。

碼值信息對照表的標準格式見圖1,其中第1列為一級關鍵字,第2列為二級關鍵字,第3列為保留信息,第4列為文本信息。例如后臺發送碼值“<[lcu1.info]> LCU1<%2,11%>”至前臺。

前臺收到信息后,開始解析[5]:

“<[lcu1.info]>”表示信息對照配置文件名,其內容即為圖1所示;

圖1 碼值信息對照表

“LCU1”為原始字符串,不需要進行碼值轉換;

“<%2,11%>”為碼值信息,第1級關鍵字2,第2級關鍵字11,經過解析找到對應的信息:“有其他流程在執行,流程退出”。

最終完整的信息為:“LCU1有其他流程在執行,流程退出”。

3 國際化資源管理策略

系統的前臺程序采用JAVA語言編碼,JAVA默認的國際化資源管理方式為properties鍵值對文件,每一個國際化語言,對應一個單獨的資源文件。然而,該模式不便于資源的整體管理。由于資源分散在各個文件中,易出現不同語言的資源文件中的信息數量不一致,導致出現前臺信息缺失的現象[6]。

因此,新一代水力發電廠監控軟件(SC2000)使用了統一的文件管理模式,所有的資源信息全部放在同一個資源文件中。系統自動根據預先的配置,獲取不同列中的信息來進行展示[7]:

如圖2所示,“key”列即為在文章開頭提到過的“key”。“cn”列為中文,“en”列為英文,“fr”列為法文,“sp”列為西班牙語,“pt”列為葡萄牙語。上述幾列均為前文提到的“value”,系統根據配置的不同,選取對應列中的“value”進行展示[8]。

圖2 國際化資源文件

4 應 用

水電站工程新一代水力發電廠監控軟件(SC2000)已在以下項目中應用:

(1) 贊比亞卡里巴水電站(中文、英語),累計安全運行超過2 650 d。

(2) 哥斯達黎加凱奇水電站(西班牙語),累計安全運行超過2 200 d。

(3) 越南松針水電站(中文、英語),累計安全運行超過960 d。

(4) 馬里古伊那水電站(法語),累計安全運行超過360 d。

(5) 洪都拉斯帕圖卡III水電站(中文、英語、西班牙語),累計安全運行超過110 d。

(6) 老撾南公水電站(中文、英語、法語),投運中。

在大量國際化項目的應用中,SC2000軟件以穩定、安全、可靠的性能獲得了用戶的認可。在同時使用多種語言的現場環境中,展現出了自身的優勢。南京南瑞水利水電科技有限公司近期承接的水力發電廠監控項目,也全部采用了SC2000軟件。隨著越來越多的國際化項目的出現,SC2000軟件將擁有更加廣闊的應用空間。

猜你喜歡
國際化信息
聚焦港口國際化
金橋(2022年10期)2022-10-11 03:29:46
人民幣國際化十年紀
中國外匯(2019年12期)2019-10-10 07:26:56
從園區化到國際化
商周刊(2018年12期)2018-07-11 01:27:18
風電巨頭的艱難國際化
能源(2017年8期)2017-10-18 00:47:50
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
直銷企業國際化并不難
陌陌唐巖:以新品提速國際化
創業家(2015年1期)2015-02-27 07:52:06
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 中文字幕中文字字幕码一二区| 九色91在线视频| 欧美一区国产| 伊伊人成亚洲综合人网7777 | 播五月综合| 亚洲无码视频一区二区三区| 欧美成人怡春院在线激情| 日韩无码真实干出血视频| 欧美一级黄片一区2区| 日韩视频福利| 日韩一级二级三级| 亚洲视屏在线观看| 二级特黄绝大片免费视频大片| 亚洲欧美人成电影在线观看| 在线观看国产黄色| 99在线视频免费观看| 欧美亚洲国产日韩电影在线| 色综合久久久久8天国| 亚洲美女一级毛片| 亚洲黄色片免费看| 三上悠亚在线精品二区| 国产精品福利一区二区久久| 欧美黑人欧美精品刺激| 女人爽到高潮免费视频大全| 午夜毛片免费观看视频 | 特级精品毛片免费观看| 国产精品毛片一区| 波多野结衣中文字幕一区二区 | 亚洲青涩在线| 麻豆精品视频在线原创| 国产av一码二码三码无码| 国产熟女一级毛片| 色悠久久久久久久综合网伊人| 狼友视频一区二区三区| 亚洲精品片911| 日韩欧美中文字幕一本| 亚洲成a人在线观看| 国内精品久久久久久久久久影视| 9啪在线视频| 国产性爱网站| 色老二精品视频在线观看| 成人在线综合| 欧美日韩高清在线| 久久国产精品影院| 亚洲高清在线播放| 2024av在线无码中文最新| 九九免费观看全部免费视频| 久久亚洲AⅤ无码精品午夜麻豆| 国产精品3p视频| 97国产在线观看| 中文成人在线视频| 色综合天天视频在线观看| 午夜视频免费试看| 欧美v在线| 日本精品影院| 波多野结衣中文字幕久久| 91精品啪在线观看国产60岁| 精品伊人久久久香线蕉| 国产一级做美女做受视频| 日本人真淫视频一区二区三区| 尤物午夜福利视频| 国产在线98福利播放视频免费| 无套av在线| 国产人人乐人人爱| 三上悠亚精品二区在线观看| 最新国产精品第1页| 日韩专区欧美| 毛片三级在线观看| 日韩黄色大片免费看| 精品亚洲国产成人AV| 鲁鲁鲁爽爽爽在线视频观看| 97成人在线视频| 免费观看国产小粉嫩喷水| 欧美黄网站免费观看| 乱人伦视频中文字幕在线| 亚洲爱婷婷色69堂| 久久精品无码专区免费| 成年人国产视频| 久久成人国产精品免费软件| 国产精品美女网站| 午夜啪啪福利| 91色在线观看|