專利名稱:在沒有字節(jié)序標(biāo)記的情況下對流式xml數(shù)據(jù)中的utf-16編碼的檢測以及相關(guān)的打印機(jī)、系 ...的制作方法
在沒有字節(jié)序標(biāo)記的情況下對流式XML數(shù)據(jù)中的UTF-16編碼的檢測以及相關(guān)的打印機(jī)、系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品
相關(guān)申請的交叉引用
本申請是國際申請日為2008年07月31日、國際申請?zhí)枮镻CT/US2008/071688、 于2010年06月21日進(jìn)入中國國家階段、中國國家申請?zhí)枮?00880121996. 4的專利申請的分案申請。技術(shù)領(lǐng)域
本發(fā)明的實(shí)施方式總體上涉及數(shù)據(jù)編碼和解碼,更具體地涉及接收傳入數(shù)據(jù)流, 并且在沒有字節(jié)序標(biāo)記(BOM)的情況下檢測和確定傳入XML數(shù)據(jù)流中用于XML聲明的 UTF-16編碼方案(包括UTF-16編碼方案的字節(jié)順序)的打印機(jī)或其他電子設(shè)備,以及相關(guān)的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
可擴(kuò)展標(biāo)記語言(XML)已經(jīng)成為易于使用并且被廣泛接受的通用標(biāo)記語言。XML 是開放標(biāo)準(zhǔn),其由多個(gè)商業(yè)和非商業(yè)實(shí)體采納以用于多種應(yīng)用。XML的一種重要用途是用于諸如經(jīng)由因特網(wǎng)和萬維網(wǎng)(WWW)跨不同的信息系統(tǒng)來共享結(jié)構(gòu)化數(shù)據(jù)。關(guān)于XML的更多細(xì)節(jié)可以參見www. w3. org/XML ;在XML I. O標(biāo)準(zhǔn)規(guī)范中,由Tim Bray> Jean Paoli、 C. M. Sperberg-McQueen、Eve Maler 和 Francois Yergeau 編輯的,Extensible Markup Language(XML)I. 0(Fourth Edition)W3C Recommendation,2006 年 8 月 16 日(可從 www. w3. org/TR/xml/獲得);以及在 XML I. I 標(biāo)準(zhǔn)規(guī)范中,由 Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, Francois Yergeau 和 John Cowan 編輯的 Extensible Markup Language (XML) I. I (Second Edition), W3CRecommendation, 2006 年 8 月 16 日(可從www. w3. org/TR/xml 11/獲得),據(jù)此通過引用將上述每一個(gè)的內(nèi)容全部并入,包括用于更加全面地描述標(biāo)準(zhǔn)形式和XML的使用以及良好形成的XML和有效的XML的目的。
與計(jì)算機(jī)以及其他計(jì)算設(shè)備和系統(tǒng)相似,打印機(jī)和打印系統(tǒng)也可以使用XML數(shù)據(jù),而不是專有數(shù)據(jù)格式和/或?qū)S谢蛘吖潭ǖ膯蝹€(gè)數(shù)據(jù)編碼方案。諸如用于打印條形碼和用于向條形碼打印機(jī)傳輸數(shù)據(jù)的打印系統(tǒng)得到了廣泛使用。并且雖然很多這種打印系統(tǒng)和打印機(jī)使用專有數(shù)據(jù)格式和/或?qū)S袛?shù)據(jù)編碼方法,并且可能無法與其他打印系統(tǒng)和條形碼打印機(jī)互換和/或兼容,但是已經(jīng)開發(fā)了一些有益的打印機(jī)和打印系統(tǒng),其使用XML數(shù)據(jù)格式和易于接受的數(shù)據(jù)編碼格式,諸如按照UTF-8編碼的XML數(shù)據(jù)。
XML標(biāo)準(zhǔn)規(guī)范允許XML數(shù)據(jù)使用多個(gè)字符編碼方案來存儲,這些字符編碼方案包括但不限于IS0-8859-1、用于韓語文本的擴(kuò)展Unix碼(EUC-KR)、UTF-8和UTF-16。并且 XML標(biāo)準(zhǔn)規(guī)范需要XML的處理器支持統(tǒng)一碼(Unicode)字符編碼UTF-8和UTF-16。諸如基于IS0/IEC 8859和UTF-32之類的受到較多限制的編碼的使用得到承認(rèn),并且被廣泛使用和支持,但這不是XML規(guī)范的強(qiáng)制要求。在XML中,可以可選地包括聲明中的屬性(也稱為元素和偽屬性),諸如說明正在使用的XML版本的XML聲明。XML聲明還可以包含關(guān)于字符編碼的信息(也稱為編碼聲明)。例如,XML腳本可以開始于XML聲明〈? xml version ="1.0 " encoding = " UTF-8 " >,其指示正在使用XML版本1. O并且編碼是UTF-8。 由此,計(jì)算設(shè)備和系統(tǒng)(包括打印機(jī))用來精確檢測XML數(shù)據(jù)中使用的編碼并且據(jù)此解碼XML數(shù)據(jù)的主方法,將要檢查XML數(shù)據(jù)流起始處的XML聲明中的編碼屬性,諸如〈? xml encoding = " UTF-8" >。
然而,對于UTF-16來說這是個(gè)問題,UTF-16是一種非ASCII透明的字節(jié)序列化編碼方案,其可以是大端(big-endian,BE)或者小端(little-endian,LE)的,并且,由此定義編碼方案中字節(jié)的次序。如果UTF-16的編碼屬性作為UTF-16來編碼,則計(jì)算設(shè)備和系統(tǒng)不能對其進(jìn)行解碼,除非計(jì)算設(shè)備或者系統(tǒng)首先知道傳入XML數(shù)據(jù)以UTF-16編碼。這在邏輯上自相矛盾。為了解決潛在的問題,XML標(biāo)準(zhǔn)規(guī)范要求以UTF-16編碼的任何XML數(shù)據(jù)之前必須存在以IS0/IEC 10464描述的有效統(tǒng)一碼UTF-16字節(jié)序標(biāo)記(BOM),或者存在具有零寬無間斷空格字符的統(tǒng)一碼xFEFF,其中xFEFF也稱為字節(jié)序標(biāo)記(在UFT-16BE中的字節(jié)序列是FE FF,而在UTF-16LE中的字節(jié)序列是FF FE)。關(guān)于XML中的字符編碼的更多細(xì)節(jié)可以參見例如!Extensible Markup Language (XML)1.1 (Second Edition)中的標(biāo)題為 Character Encoding in Entities 的 4. 3. 3 章,以及 The Unicode Standard 版本 5. 0 中的標(biāo)題為 Encoding Forms 和 Encoding Schemes 的 2. 5 和 2. 6 章。
另外,統(tǒng)一碼標(biāo)準(zhǔn)本身聲明了 BOM的使用是可選的。這提出了針對UTF-16和XML 的使用的另一問題。例如,用于創(chuàng)建XML數(shù)據(jù)的多種工具是統(tǒng)一碼兼容的,但未必是特別針對XML而編寫的,因此可能是有效但非形式良好的XML。因此,UTF-16XML數(shù)據(jù)之前可以不是需要的BOM。XML標(biāo)準(zhǔn)規(guī)范認(rèn)為,既不是開始于字節(jié)序標(biāo)記也不開始于編碼聲明的實(shí)體使用除UTF-8之外的編碼是一個(gè)致命錯(cuò)誤。
當(dāng)計(jì)算設(shè)備或者系統(tǒng)必須解釋諸如來自多個(gè)主機(jī)/源的XML數(shù)據(jù)的傳入數(shù)據(jù)流并且每個(gè)數(shù)據(jù)流可以使用其自身的編碼方案,而不是使用單個(gè)已知編碼方案的個(gè)體XML數(shù)據(jù)文件、單個(gè)主機(jī)/源或者多個(gè)主機(jī)/源時(shí),這個(gè)問題將加劇。例如,計(jì)算設(shè)備或者系統(tǒng)可能無法檢測 新XML聲明的起始的存在和/或可能無法確定用于隨后的XML數(shù)據(jù)的編碼方案, 特別是在XML數(shù)據(jù)以UTF-16編碼而不提供BOM時(shí)。
需要可以接收傳入數(shù)據(jù)流以便在沒有BOM的情況下準(zhǔn)確、自動(dòng)地檢測和確定傳入 XML數(shù)據(jù)流中用于XML聲明的UTF-16編碼方案及其字節(jié)順序的打印機(jī)和其他電子設(shè)備、系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。發(fā)明內(nèi)容
鑒于上述背景技術(shù),本發(fā)明的實(shí)施方式提供了可以接收傳入數(shù)據(jù)流并且針對沒有 BOM的傳入XML數(shù)據(jù)流中的XML聲明而明確地、自動(dòng)檢測和確定UTF-16編碼方案及其字節(jié)順序的打印機(jī)和其他電子設(shè)備、系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。由此,本發(fā)明的實(shí)施方式允許即使自動(dòng)和明確地精確檢測混合編碼環(huán)境(例如,來自使用不止一個(gè)編碼方案的一個(gè)或多個(gè)源)以UTF-16編碼的XML數(shù)據(jù),即使XML數(shù)據(jù)不是以BOM開始。本發(fā)明的實(shí)施方式可以用于任何XML和統(tǒng)一碼兼容的打印機(jī)。本發(fā)明的實(shí)施方式還適用于將來自使用多個(gè)編碼方案的一個(gè)或多個(gè)源的XML或者另一結(jié)構(gòu)化標(biāo)記語言和統(tǒng)一碼數(shù)據(jù)流接收到單個(gè)端口以用于解釋的任何電子設(shè)備或者系統(tǒng)。
提供了本發(fā)明的方法的實(shí)施方式,其在沒有BOM的傳入XML數(shù)據(jù)流中自動(dòng)檢測 UTF-16編碼。本發(fā)明的一個(gè)不例性實(shí)施方式簡要描述如下。本發(fā)明的方法的實(shí)施方式包括接收傳入數(shù)據(jù)流,并且在傳入數(shù)據(jù)流中監(jiān)測0x3C字節(jié)的存在。該方法還可以存儲傳入數(shù)據(jù)流的當(dāng)前編碼狀態(tài)。當(dāng)識別到0x3C字節(jié)時(shí),該實(shí)施方式確定跟隨0x3C字節(jié)的字節(jié)是否是空0x00字節(jié)。如果跟隨0x3C字節(jié)的字節(jié)是空0x00字節(jié),并且如果當(dāng)前編碼狀態(tài)不是 UTF-16LE,則該實(shí)施方式確定0x3C字節(jié)之前的字節(jié)是否是空0x00字節(jié)。如果0x3C字節(jié)之前的字節(jié)是空0x00字節(jié),則該實(shí)施方式開始將傳入數(shù)據(jù)流作為UTF-16BE來處理,并且將傳入數(shù)據(jù)流的當(dāng)前編碼狀態(tài)存儲為UTF-16BE。如果0x3C字節(jié)之前的字節(jié)不是空0x00字節(jié), 則該實(shí)施方式開始將傳入數(shù)據(jù)流作為UTF-16LE來處理,并且將傳入數(shù)據(jù)流的當(dāng)前編碼狀態(tài)存儲為UTF-16LE。而且,如果跟隨0x3C字節(jié)的字節(jié)是空0x00字節(jié),并且如果當(dāng)前編碼狀態(tài)是UTF-16LE,則該實(shí)施方式確定0x3C字節(jié)之前的兩個(gè)字節(jié)是否是空0x00字節(jié)。如果 0x3C字節(jié)之前的兩個(gè)字節(jié)是空0x00字節(jié),則該實(shí)施方式開始將傳入數(shù)據(jù)流作為UTF-16BE 來處理,并且將傳入數(shù)據(jù)流的當(dāng)前編碼狀態(tài)存儲為UTF-16BE。如果0x3C字節(jié)之前的兩個(gè)字節(jié)不是空0x00字節(jié),則該實(shí)施方式開始將傳入數(shù)據(jù)流作為UTF-16LE來處理,并且將傳入數(shù)據(jù)流的當(dāng)前編碼狀態(tài)存儲為UTF-16LE。如果跟隨0x3C字節(jié)的字節(jié)不是空0x00字節(jié),則該實(shí)施方式使用XML編碼標(biāo)簽來根據(jù)XML編碼標(biāo)簽中標(biāo)識的編碼方案確定傳入數(shù)據(jù)流的當(dāng)前編碼狀態(tài),并且根據(jù)XML編碼標(biāo)簽中標(biāo)識的編碼方案開始處理傳入數(shù)據(jù)流。該方法還可以將傳入數(shù)據(jù)流的當(dāng)前編碼狀態(tài)存儲為XML編碼標(biāo)簽中標(biāo)識的編碼方案。
下面描述本發(fā)明的這些特性以及附加的特征、功能和細(xì)節(jié)。類似地,以下還描述了本發(fā)明的打印機(jī)和其他電子設(shè)備和系統(tǒng)以及相關(guān)的方法和計(jì)算機(jī)程序產(chǎn)品的相應(yīng)的和附加的實(shí)施方式。
由此在總體方面描述了本發(fā)明的實(shí)施方式,現(xiàn)在將參考附圖,其不一定是按比例繪制的,并且其中
圖I是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的打印系統(tǒng)的示意框圖2是本發(fā)明的一個(gè)實(shí)施方式的方法的功能軟件流程圖;以及
圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的能夠作為打印機(jī)或者其他計(jì)算設(shè)備或者系統(tǒng)操作的實(shí)體的示意框圖。
具體實(shí)施方式
現(xiàn)在將參考附圖在下文中更加全面地描述本發(fā)明的實(shí)施方式,附圖中示出了本發(fā)明的一些但非全部實(shí)施方式。實(shí)際上,本發(fā)明的實(shí)施方式可以以多種不同的形式實(shí)現(xiàn),并且不應(yīng)當(dāng)限于此處所述的實(shí)施方式;當(dāng)然,提供了這些實(shí)施方式以使得本公開將滿足可適用的法律要求。在全文中,相似的參考標(biāo)號指的是相似的元件。
將理解,從下文中,多種類型的計(jì)算設(shè)備和系統(tǒng)可以與本發(fā)明一起使用,計(jì)算設(shè)備和系統(tǒng)例如包括計(jì)算機(jī)、打印機(jī)、打印服務(wù)器、因特網(wǎng)服務(wù)器、路由器、移動(dòng)電話、移動(dòng)媒體設(shè)備、手持式數(shù)據(jù)終端、個(gè)人數(shù)據(jù)助理(PDA)以及其他計(jì)算設(shè)備和系統(tǒng)。本發(fā)明的實(shí)施方式可以通過和/或利用從Vernon Hills, 111的Zebra Technologies公司商業(yè)可得的打印機(jī)來實(shí)現(xiàn),包括以下打印機(jī)型號XiIII+、90XiIII+、96XiIII+、110XIII+、140XiIII+、 170XiIII+、220XiIII+、型號 Z4M、Z6M、105SL 型號 R4Mplus、R402、R-140 和型號 Xi 系列打印機(jī)。涉及這些以及類似的打印機(jī)和相應(yīng)的打印系統(tǒng)的更多細(xì)節(jié)可以參見于2002年I 月4日提交的、名稱是XML Printer Technology的美國臨時(shí)申請序列號60/345,389 ;于 2001 年 12 月 7 日提交的、名稱是 Bar Code Labeling Systems Having Machine Readable Standards的美國臨時(shí)申請序列號60/341,427 ;于2002年7月17日提交的、名稱是Native XML Printer的美國申請序列號10/197,014,現(xiàn)在是美國專利號6,540,142 ;于2003年I月 10日提交的、名稱是XML Printer System的美國申請序列號10/332,604 ;于2006年2月10 日提交的、名稱是XML Printer System的美國申請序列號11/351,748 ;于2007年7月6日提交的、名稱是XML Printer System的美國申請序列號11/774,152 ;于2003年I月21日提交的、名稱是Native XML Printer的美國申請序列號10/348,422 ;于2003年6月20日提交的、名稱是XML System的美國申請序列號10/601,213,現(xiàn)在是美國專利號6,908,034 ; 于2004年12月13日提交的、名稱是XML System的美國申請序列號11/010,895,現(xiàn)在是美國專利號7,172,122 ;于2006年11月17日提交的、名稱是XML System的美國申請序列號 11/561,084 ;以及于 2006 年 3 月 28 日提交的、名稱是 XML Printer System with RFID Capability的美國申請序列號10/505,982 ;于2006年I月24日提交的、名稱是Global Printing System and Method of Using Same 的美國臨時(shí)申請序列號60/761,610 ;于2007 年 I 月 24 日提交的、名稱是Global Printing System and Method of Using Same 的美國申請序列號11/626,670,在此通過引用并入每個(gè)的全部內(nèi)容,包括用于更加全面地描述此類打印系統(tǒng)和打印機(jī)的使用和配置并且從而更加全面地描述XML和統(tǒng)一碼數(shù)據(jù)的使用。
另外,雖然以下關(guān)于與打印機(jī)的有線直接的和聯(lián)網(wǎng)的通信描述了本發(fā)明,但是本發(fā)明可應(yīng)用于用于建立任何類型和數(shù)量的計(jì)算設(shè)備和系統(tǒng)之間的通信的任何形式的有線和無線接入以及通信協(xié)議,例如包括WLAN、藍(lán)牙(BT)、WiMAX、UWB、紅外(IR)和蜂窩無線技術(shù) 和協(xié)議、串行、并行和以太網(wǎng)有線技術(shù)和協(xié)議以及IEEE1394直接連接技術(shù)和協(xié)議。另外, 本發(fā)明的實(shí)施方式可以利用任何類型的共置(共存或者鄰近)或者分布式(遠(yuǎn)程)架構(gòu)來運(yùn)行。計(jì)算設(shè)備不需要物理地共置。類似地,本發(fā)明的實(shí)施方式可以使用共享硬件(例如, 處理器、存儲器和電源)或者軟件(例如,操作系統(tǒng)、固件、軟件打印驅(qū)動(dòng)、打印繪制子系統(tǒng)和應(yīng)用),或者可以使用共置或者分布式的分離的硬件。
將會理解,本發(fā)明的實(shí)施方式對于具有多個(gè)主機(jī)和/或源(此處統(tǒng)稱為源)的打印應(yīng)用可能特別有用。然而,本發(fā)明的實(shí)施方式不限于此類多源打印應(yīng)用,而是可以應(yīng)用于包括單源和多源環(huán)境的任何類型的環(huán)境,并且用于任何類型的應(yīng)用,包括打印、因特網(wǎng)、文件傳送、流式多媒體和其他數(shù)據(jù)傳送應(yīng)用。
并且進(jìn)一步地,雖然以下關(guān)于XML數(shù)據(jù)描述了本發(fā)明,但是本發(fā)明可以按照與具有已知的開始識別符(諸如,有效的XML數(shù)據(jù)必須以XML聲明開始,XML聲明以“〈 xml” 開始)或者至少已知的開始標(biāo)簽聲明起始識別符(諸如,HTML標(biāo)簽以“〈”開始)的其他結(jié)構(gòu)化標(biāo)記語言和腳本(諸如ZPL和HTML)相類似的方式來實(shí)現(xiàn)。
這里,術(shù)語“ASCII透明的”和“ASCII透明性”是用來表示以下編碼方案性質(zhì)的術(shù)語,其中,用于表示前128個(gè)字符的字節(jié)與ASCII標(biāo)準(zhǔn)相同。ASCII透明編碼方案的示例是 ASCII,GB2312 和 UTF-8。
本發(fā)明的實(shí)施方式提供了本發(fā)明的實(shí)施方式的打印機(jī)和其他電子設(shè)備、系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品,其在沒有UTF-16字節(jié)序標(biāo)記(BOM)或者編碼聲明的情況下自動(dòng)地檢測和確定傳入XML數(shù)據(jù)流中用于XML聲明的UTF-16編碼方案及其字節(jié)順序。這允許自動(dòng)和明確地精確檢測混合編碼環(huán)境(諸如,來自使用不止一個(gè)編碼方案的多個(gè)源)中的UTF-16 編碼的XML數(shù)據(jù),即使XML數(shù)據(jù)沒有以BOM或者編碼聲明開始。這還允許支持使用不同的統(tǒng)一碼和專有編碼方案的傳統(tǒng)設(shè)備和系統(tǒng),以及不是XML兼容的傳統(tǒng)設(shè)備和系統(tǒng),即,諸如沒有配置為包括針對UTF-16編碼的XML數(shù)據(jù)的BOM的設(shè)備和系統(tǒng)。
現(xiàn)在參考圖1,根據(jù)本發(fā)明的實(shí)施方式的打印機(jī)250的高層示意框圖的一個(gè)示例性實(shí)施方式示出與包括計(jì)算機(jī)系統(tǒng)112的各種附加設(shè)備通信。打印機(jī)250連接至計(jì)算機(jī)系統(tǒng)112,計(jì)算機(jī)系統(tǒng)112本身包括各種硬件組件,諸如RAM 14,ROM 116、硬盤存儲118、高速緩沖存儲器120、數(shù)據(jù)庫存儲122等(統(tǒng)稱存儲或者存儲器,并且示出為存儲或者存儲器子系統(tǒng)126),這是本領(lǐng)域已知的。打印機(jī)250和計(jì)算機(jī)系統(tǒng)112組合可以統(tǒng)稱為打印系統(tǒng)。 打印機(jī)250和計(jì)算機(jī)系統(tǒng)112可以組合在共同的外殼中(共存),但并非一定限于該方式。 例如,計(jì)算機(jī)系統(tǒng)112可以置于與打印機(jī)250分離和隔開的外殼中,以使得兩個(gè)設(shè)備接近共同定位。組合打印系統(tǒng)可以不被認(rèn)為是兩個(gè)獨(dú)立的設(shè)備和/或可以視為單個(gè)設(shè)備,并且由此單獨(dú)稱為打印機(jī)或者打印系統(tǒng)。當(dāng)置于分離外殼中時(shí),不管是否彼此接近或者遠(yuǎn)離,兩個(gè)設(shè)備可以單獨(dú)稱為打印機(jī)和計(jì)算機(jī)。另外,當(dāng)打印機(jī)250包括所有必需的硬件和固件,并且配置用于獨(dú)立于任何特定計(jì)算機(jī)系統(tǒng)112、112a,......112η或者其他設(shè)備(例如,ERP 188)而操作時(shí),計(jì)算機(jī)系統(tǒng)112類似于用于打印機(jī)的數(shù)據(jù)的任何其他主機(jī)或者源(諸如計(jì)算機(jī)系統(tǒng)112a......112η和ERP 188)。此類設(shè)備的關(guān)系對于本發(fā)明的實(shí)施方式不是特定的。
計(jì)算機(jī)系統(tǒng)112可以包括任何適合的處理設(shè)備128,處理設(shè)備128諸如本領(lǐng)域所公知的計(jì)算機(jī)、微處理器、RISC處理器(精簡指令集計(jì)算機(jī))、CISC處理器(復(fù)雜指令集計(jì)算機(jī))、大型計(jì)算機(jī)、工作站、單片計(jì)算機(jī)、分布式處理器、服務(wù)器、控制器、微控制器、離散邏輯計(jì)算機(jī)或者類似的處理器。例如,處理設(shè)備128可以是IntelCore 或者Pentium 微處理器、其他x86兼容微處理器或者等同的處理設(shè)備。
存儲器子系統(tǒng)126可以包括任何適合的存儲組件,存儲組件諸如RAM 114、ROM 116、EPROM (電可編程ROM)、閃存、動(dòng)態(tài)存儲器、靜態(tài)存儲器、FIFO(先進(jìn)先出)存儲器、 LIFO(后進(jìn)先出)存儲器、循環(huán)存儲器、半導(dǎo)體存儲器、磁泡存儲器、緩沖存儲器、硬盤存儲器118、光學(xué)存儲器、高速緩沖存儲器120、數(shù)據(jù)庫存儲器122等,這是本領(lǐng)域已知的??梢允褂萌魏芜m合形式的存儲器或者存儲或者存儲器子系統(tǒng)126,不管是否是磁性介質(zhì)上的固定存儲、半導(dǎo)體器件中的存儲或者通過通信鏈路可訪問的遠(yuǎn)程存儲。
用戶接口 130可以包括在計(jì)算機(jī)系統(tǒng)112中或者耦合至計(jì)算機(jī)系統(tǒng)112,并且可以包括各種用戶輸入設(shè)備136,用戶輸入設(shè)備136諸如本領(lǐng)域所公知的用戶可選擇的按鈕或者開關(guān)、鍵盤、鼠標(biāo)、觸摸屏、條形碼掃描儀、RFID讀取器(或者讀取器/記錄器)或者類似的用戶輸入設(shè)備。用戶接口 130還可以包括一個(gè)或多個(gè)適合的用戶輸出設(shè)備140,諸如IXD 顯示器、CRT、各種LED指示燈、語音輸出設(shè)備以及類似的數(shù)據(jù)輸出呈現(xiàn)設(shè)備,這是本領(lǐng)域已知的。
為了在計(jì)算機(jī)系統(tǒng)112與外部源之間進(jìn)行通信,通信接口 142可以可操作地包括在計(jì)算機(jī)系統(tǒng)112中或者耦合至計(jì)算機(jī)系統(tǒng)112。通信接口 142例如可以是如針對計(jì)算機(jī)系統(tǒng)112所示的用于直接連接至打印機(jī)250的接口,或者如針對計(jì)算機(jī)系統(tǒng)112a......112η所示的用于連接至局域網(wǎng)、以太網(wǎng)、內(nèi)聯(lián)網(wǎng)或者其他適合的網(wǎng)絡(luò)144的接口。通信接口還可以連接至公共交換電話網(wǎng)(PSTN)或者POTS(簡易老式電話系統(tǒng)),其可以促進(jìn)與網(wǎng)絡(luò)144 的通信或者到打印機(jī)250的直接連接。還可以采用專用和遠(yuǎn)程網(wǎng)絡(luò)。如本領(lǐng)域已知的,可以使用任何適合的可商購的通信設(shè)備或者網(wǎng)絡(luò)。
如上所述,計(jì)算機(jī)系統(tǒng)112、112a......112η可以耦合至打印機(jī)250。打印機(jī)250可以是XML打印機(jī),其中系統(tǒng)的本機(jī)或者自然“語言”是XML,并且由此稱為“本機(jī)XML打印機(jī)”。打印機(jī)250包括處理器228,并且還可以包括參照計(jì)算系統(tǒng)112和圖3的實(shí)體更加全面地示出和描述的附加計(jì)算硬件。打印機(jī)250可以包括介質(zhì)/紙張控制系統(tǒng)252、打印繪制子系統(tǒng)254 (諸如包括打印驅(qū)動(dòng)器或者打印繪制驅(qū)動(dòng)器,不要與軟件打印驅(qū)動(dòng)混淆)以及打印頭機(jī)構(gòu)256??梢允褂媚軌虼蛴l形碼標(biāo)貼的任何適合的打印機(jī),其可以包括各種點(diǎn)陣、噴墨、激光和/或熱敏打印機(jī)。例如,此類適合的打印機(jī)從Vernon Hills, 111.的Zebra Technologies公司可得,并且可以包括型號Xi系列條形碼打印機(jī)(XiIII+、90XiIII+、 96XiIII+、110XiIII+140XiIII+、170XiIII+、220XiIII+等),2800 系列條形碼打印機(jī),型號 Z4M、Z6M,105SL條形碼打印機(jī),型號R4Mplus、R402、R-140打印機(jī)/編碼器等。由于用于與條形碼打印機(jī)進(jìn)行通信的XML的使用以及由條形碼打印機(jī)XML使用的樣式表的特定適用性,條形碼打印機(jī)此處用作示例。
備選地或者附加地,打印機(jī)250可以包括“非打印”機(jī)構(gòu),用以處理RFID(射頻識別)或者類似的電子介質(zhì)的編程,其還可以接收其表面上的打印的標(biāo)貼或者其他打印的標(biāo)示。例如,打印機(jī)250可以包括RFID收發(fā)器261,用于以結(jié)合RFID介質(zhì)或/和RFID應(yīng)答器182來操作。術(shù)語“打印機(jī)”意味著包括還包括RFID讀取和/或?qū)懭肽芰Φ南到y(tǒng),但是 “RFID”可能不是該術(shù)語的一部分。此外,雖然此處使用術(shù)語“條形碼標(biāo)貼”,但是該術(shù)語不限于紙標(biāo)貼,并且可以包括例如票、標(biāo)簽、卡、單張紙、連續(xù)并折疊的紙、塑料介質(zhì)、嵌入有RFID 電路的介質(zhì)以及其他自動(dòng)標(biāo)識器件。本發(fā)明適 用于不同類型的介質(zhì)完全如同其應(yīng)用于不同類型的打印機(jī)以及其他計(jì)算設(shè)備。
通常,此類打印機(jī)可以包括各種發(fā)動(dòng)機(jī)、標(biāo)貼切割機(jī)、帶處理機(jī)、傳感器等,這是本領(lǐng)域已知的。另外,此類打印機(jī)可以包括各種控制輸入或者傳感器,諸如介質(zhì)傳感器、打印頭溫度傳感器、頭打開傳感器、帶傳感器等,這是本領(lǐng)域已知的。打印機(jī)250可以包括除了處理器228以外的一個(gè)或多個(gè)附加的處理器,諸如駐留于計(jì)算機(jī)系統(tǒng)112中的處理器128。 備選地,計(jì)算機(jī)系統(tǒng)112中的處理器128如果足夠強(qiáng)大,則可以控制和處理打印機(jī)250功能,而不需要打印機(jī)250中的獨(dú)立處理設(shè)備(諸如處理器228)。由此,打印機(jī)250的所有功能可以由與打印機(jī)在物理上分離的計(jì)算機(jī)或者處理器來控制。關(guān)于打印頭控制的更多細(xì)節(jié)可以參見名稱為“Thermal Transfer Printer with Controlled Ribbon Feed,,、于 1994年 12月13日公告的美國專利號5,372,439,在此通過引用并入其全部內(nèi)容。然而,通常,打印機(jī)將包括處理器。
RFID收發(fā)器261可以配置用于與RFID應(yīng)答器182通信,并且讀取或者編程RFID應(yīng)答器。RFID應(yīng)答器182可以是“芯片”或者“無芯片”類型,并且此類RFID應(yīng)答器的一種常見形式包括天線和RFID集成電路,其通常在“智能標(biāo)貼”中使用。此類RFID應(yīng)答器182包括 DC供電的有源應(yīng)答器和無電池的無源應(yīng)答器兩者,并且在多種形狀因數(shù)中可用。術(shù)語“條形碼打印機(jī)”和“條形碼系統(tǒng)”此處可與術(shù)語“條形碼/RFID系統(tǒng)”、“XML系統(tǒng)”等互換使用,并且此類系統(tǒng)包括將RFID數(shù)據(jù)編碼到RFID應(yīng)答器中的能力,當(dāng)然,術(shù)語“RFID”并非必須是標(biāo)識文本的一部分。關(guān)于RFID應(yīng)答器的更多細(xì)節(jié)可以參見名稱為Method And Apparatus For Associating On Demand Certain Selected Media And Value-Adding Elements、于 2001年10月25日提交的美國申請序列號10/001,364,在此通過引用并入其全部內(nèi)容。
用戶接口 230可以包括在打印機(jī)250中或者耦合至打印機(jī)250,并且可以包括各種用戶輸入設(shè)備136,諸如用戶可選擇的按鈕或者開關(guān)、鍵盤、鼠標(biāo)、觸摸屏、條形碼掃描儀、 RFID讀取器(或者讀取器/記錄器)或者類似的用戶輸入設(shè)備,這是本領(lǐng)域已知的。用戶接口 230還可以包括一個(gè)或多個(gè)適合的用戶輸出設(shè)備140,諸如IXD顯示器、CRT、各種LED 指示燈、語音輸出設(shè)備和類似的數(shù)據(jù)輸出呈現(xiàn)設(shè)備,這是本領(lǐng)域已知的。
為了在打印機(jī)250與外部源(諸如計(jì)算機(jī)系統(tǒng)112、112a......112η)之間通信,通信接口 242可以可操作地包括在打印機(jī)250中或者耦合至打印機(jī)250。通信接口 242例如可以是如針對打印機(jī)250所示的用于直接連接至計(jì)算機(jī)系統(tǒng)112的接口或者用于連接至局域網(wǎng)、以太網(wǎng)、內(nèi)聯(lián)網(wǎng)或者其他適合的網(wǎng)絡(luò)144的接口。通信接口還可以連接至公共交換電話網(wǎng)(PSTN)或者POTS(簡易老式電話系統(tǒng)),其可以促進(jìn)與網(wǎng)絡(luò)144的通信或者到計(jì)算機(jī)系統(tǒng)112、112a......112η或者其他設(shè)備的直接連接。還可以采用專用的和遠(yuǎn)程的網(wǎng)絡(luò)??梢允褂帽绢I(lǐng)域所公知的任何適合的可商購的通信設(shè)備或者網(wǎng)絡(luò)。如上所述,除了計(jì)算機(jī)系統(tǒng)112、112a......112η以外,通信接口 242可以提供與其他設(shè)備的直接或者間接以及有線或者無線的通信,其他設(shè)備諸如外部硬盤驅(qū)動(dòng)器、可移動(dòng)存儲器設(shè)備(諸如USB閃存驅(qū)動(dòng)器)或者其他存儲設(shè)備、RFID標(biāo)簽讀取器、條形碼掃描儀、另一打印機(jī)以及其他數(shù)據(jù)源。經(jīng)由通信接口 242與打印機(jī)250通信的任何設(shè)備可以是諸如向打印機(jī)250傳入XML數(shù)據(jù)流的傳入數(shù)據(jù)源,例如包括存儲在打印服務(wù)器中的XML打印數(shù)據(jù)、USB閃存驅(qū)動(dòng)器或者經(jīng)由通信接口 242向打印機(jī)250傳輸?shù)钠渌O(shè)備。
還示出了企業(yè)資源規(guī)劃(ERP)系統(tǒng)188,其例如可以是直接或者經(jīng)由網(wǎng)絡(luò)144而向打印機(jī)250傳輸XML數(shù)據(jù)的倉庫管理系統(tǒng)。ERP系統(tǒng)188可以發(fā)起針對諸如條形碼標(biāo)貼的打印信息或者對諸如RFID數(shù)據(jù)的編碼信息的請求。當(dāng)然與計(jì)算機(jī)系統(tǒng)112、112a......112η類似,可以使用任何企業(yè)計(jì)算機(jī)系統(tǒng),并且本發(fā)明不限于與任何類型的企業(yè)計(jì)算機(jī)系統(tǒng)結(jié)合使用。
對于示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的打印機(jī)250的高層示意性框圖的示例性實(shí)施方式的圖1進(jìn)行的上述描述,有助于認(rèn)識到現(xiàn)代計(jì)算設(shè)備和系統(tǒng)可以按照多種方式配置,并且包括多個(gè)設(shè)備和系統(tǒng)。同樣地,當(dāng)多個(gè)系統(tǒng)可以配置用于以各種編碼方案彼此傳輸數(shù)據(jù)時(shí),重要的是接收設(shè)備能夠識別接收到的數(shù)據(jù)的編碼方案,并且根據(jù)紙張編碼方案來解碼接收到的數(shù)據(jù)。這與非ASCII透明編碼方案特別相關(guān)。而且,如上所述,在不存在諸如BOM或者其他編碼聲明的適當(dāng)編碼方案標(biāo)識的情況下,接收設(shè)備可能無法適當(dāng)?shù)亟獯a接收到的數(shù)據(jù),或者在流式數(shù)據(jù)的情況下,甚至可能無法檢測與在前數(shù)據(jù)以不同的編碼方案編碼的數(shù)據(jù)的開始。對于以UTF-16編碼的沒有BOM的XML數(shù)據(jù)來說,這個(gè)問題尤其如此。 本發(fā)明的實(shí)施方式解決了這個(gè)問題。
現(xiàn)在參考圖2,其示出了功能軟件流程圖的一個(gè)實(shí)施方式。每個(gè)框描述的功能可以編碼在存儲在計(jì)算機(jī)可讀和計(jì)算機(jī)可用介質(zhì)上的控制邏輯(軟件代碼)中,從而創(chuàng)建計(jì)算機(jī)程序產(chǎn)品。圖2的功能此處統(tǒng)稱為檢測模塊,如圖3的檢測模塊330所示。但是,單個(gè)功能可以編碼在單獨(dú)的控制邏輯中和/或存儲在獨(dú)立的計(jì)算機(jī)可讀介質(zhì)之中或之上。檢測模塊的架構(gòu)對于本發(fā)明的實(shí)施方式不是特定的。功能可以是固件、軟件或者其他控制邏輯的一部分,其在此處可互換地統(tǒng)稱為軟件、功能和軟件功能,軟件、功能或者軟件功能并不存儲在特定類型的計(jì)算機(jī)可讀介質(zhì)中的編碼的控制邏輯中。
以下關(guān)于圖2描述的軟件可以由圖1的打印機(jī)250的處理器228來執(zhí)行或者由計(jì)算機(jī)系統(tǒng)112的處理器128來執(zhí)行,這取決于圖1的打印機(jī)250與計(jì)算機(jī)系統(tǒng)112之間的關(guān)系。再次,如果計(jì)算機(jī)系統(tǒng)112和打印機(jī)250兩者之間存在共同的功能,則處理器128可以執(zhí)行該共同的功能。并且在任一設(shè)備上可以存在一個(gè)或者多個(gè)處理器,其可以協(xié)同工作或者可以單獨(dú)工作。對于本發(fā)明的范圍來說,處理或者處理功能由計(jì)算機(jī)系統(tǒng)112還是打印機(jī)250來執(zhí)行不是實(shí)質(zhì)性的。
本發(fā)明的實(shí)施方式和圖2的流程圖依賴于以下兩個(gè)基本原則。首先,傳入數(shù)據(jù)流中的XML腳本(也稱為傳入XML流或者傳入XML數(shù)據(jù)流)之前的數(shù)據(jù)之間可能的編碼方案改變的數(shù)目是有限的。特別地,總共存在18種轉(zhuǎn)換情況。以下對這18中轉(zhuǎn)換情況進(jìn)行詳細(xì)描述。其次,所有有效的XML腳本,不管是否是良好形成的或者僅是有效的,都必須以開始于“〈? xml ”的XML聲明開始。
下表標(biāo)識了針對傳入數(shù)據(jù)流中新的有效XML腳本的18種轉(zhuǎn)換情況。轉(zhuǎn)換縮寫為下表中針對編碼方案和BOM而呈現(xiàn)的圖例。對于每種轉(zhuǎn)換情況,標(biāo)識了在前的編碼方案、回車和換行(CR/LR)、BOM, < xml聲明開始和新的XML編碼方案。而且 ,對于根據(jù)本發(fā)明實(shí)施方式的每種轉(zhuǎn)換情況的確定,標(biāo)識了圖2的流程圖的相應(yīng)過程的部分。
ASCII 透明 UTF-16BE UTF-16LE ASCII 透明 ASCII 透明 UTF-16LEUTF-16LEUTF-16BEUTF-16BEU 丁 F-16BE UTF-16LE ASCII 透明 UTF-16LE UTF-16BE ASCII 透明 UTF-16BE UTF-16LE ASCII 透明字符返闖 /換行 (CRihBBOM< OdOa3c3fOOOdOOOa OdOOOaOO003c003f 3c003f00OdOa3cO03fOOOdOa003c003fOdOOOaOO003c003fOdOOOaOO3c3fOOOdOOOa3c003f00OOOdOOOa3c3fOdOa OdOafeff fffe003c003f 3c003fl)0 OOOdOOOaefbbbf3c3fOOOdOOOa OdOOOaOOfffe feff3c003f00 003c003fOdOOOaOOefbbbf3c3fOOOdOOOa OdOOOaOOfeff fffe003c003f 3c003f00OdOaefbbbf3c3f新肌編碼ASCII透明UTF-16BEUTF-16LEUTF-16LEUTF-16BEUTF-16BE ASCII 透明 UTF-16LE ASCII 透明 UTF-16BE UTF-16LE ASCII 透明 UTF-16LE UTF46BE ASCII 透明 UTF-16BE UTF-16LE ASCII 透明圖2流程44-46-4844-60-62-6444-60-80-8444-60-62-6644-60-62-6444-60-80-8244-46-4844-60-62-6644-46-4844-60-62-6444-60-80-8444-46-4844-60-80-8444-60-62-6444-46-4844-60-62-64 44-6 請-8444-46-48情況cdef轉(zhuǎn)換A-AB-BL-LA-LA-BL-BL-AB-LB-AA-FEFF-BA-FFFE-LB-EFBBBF-AB-FFFE-LL-FEFF-BL-EFBBBF-AB-FEFF-BL-FFFE-LA-EFBBBF-A
A = ASCII 透明
B = UTF-16BE
L = UTF-16LE
FEFF = UTF-16BE BOM
FFFE = UTF-16LE BOM
EFBBBF = UTF-8B0M
通過執(zhí)行對傳入數(shù)據(jù)流的字節(jié)級檢查,以及尋找關(guān)鍵字位置處的空0x00字節(jié)的存在和/或不存在,本發(fā)明的實(shí)施方式能夠唯一地標(biāo)識當(dāng)前的數(shù)據(jù)流匹配18種轉(zhuǎn)換情況中的哪一種。并且18種轉(zhuǎn)換情況中的每一種可以用于唯一地標(biāo)識正在使用哪種可能的編碼方案(ASCII 透明的、UTF-16BE 或者 UTF-16LE)。
再次并且更加具體地參考圖2的流程圖,給出了 XML編碼方案的自動(dòng)檢測的方法, 并且按照流程圖所示出的次序和決策。作為該方法的前驅(qū),并且如下文關(guān)于框92詳述的, 本發(fā)明實(shí)施方式的方法可以依賴于傳入數(shù)據(jù)流的當(dāng)前編碼方案的知識。由此,如果需要,方法可以開始于在到達(dá)下文描述的框90之前的方法的第一輪期間,將傳入數(shù)據(jù)流的當(dāng)前編碼方案存儲到諸如可能被訪問的存儲器中,或者該步驟可以在方法開始之前進(jìn)行。存儲當(dāng)前編碼方案可以通過諸如使用日志文件或者僅維護(hù)具有當(dāng)前編碼方案的指示的RAM地址來執(zhí)行。另外,在當(dāng)前編碼方案是ASCII透明的時(shí),存儲當(dāng)前編碼方案可以僅需要不再將之前存儲的非ASCII透明的編碼方案表示為當(dāng)前編碼方案,并且,例如,當(dāng)前編碼方案默認(rèn)地確定或者由ASCII透明的編碼方案的特性來實(shí)時(shí)確定。例如,打印機(jī)可以跟蹤記錄當(dāng)前編11前碼態(tài)在編狀碼方案,并且使用本發(fā)明的方法來檢測當(dāng)前編碼方案的改變(其繼而被標(biāo)識為打印機(jī)將要跟蹤記錄的當(dāng)前編碼方案),從而按照本發(fā)明的實(shí)施方式來操作。存儲當(dāng)前編碼方案的方式對于本發(fā)明的實(shí)施方式不是特定的。
如開始框10所標(biāo)識的,方法開始,隨后初始化(創(chuàng)建和/或起始)并且清除“先進(jìn)先出”(FIF0)數(shù)據(jù)緩沖器和FIFO解析器緩沖器,如框20所示。該方法繼續(xù)進(jìn)行,從通信端口接收數(shù)據(jù),如框22所示,以及將接收的數(shù)據(jù)存儲在數(shù)據(jù)緩沖器中,如框24所示。然后該方法繼續(xù)進(jìn)行,從數(shù)據(jù)緩沖器向解析器緩沖器移動(dòng)(傳送)一個(gè)字節(jié),如步驟26所示。
然后該方法到達(dá)框40處的第一決策點(diǎn),在此,確定解析器緩沖器中的當(dāng)前字節(jié)是否是0x3C字節(jié),其潛在地表示XML腳本聲明的開始的“ < ”字符的0x3C字節(jié),諸如“〈? xml ” 中出現(xiàn)的。例如,在UTF-16BE中,0x3C字節(jié)在兩個(gè)字節(jié)序列003C中出現(xiàn),在UTF-16LE中, 0x3C字節(jié)在兩個(gè)字節(jié)序列3C00中出現(xiàn),并且在UTF-8和其他ASCII透明編碼方案中,0x3C 字節(jié)表示“〈”字符。由此,對于ASCII透明的編碼,0x3C字節(jié)的存在明確地標(biāo)識出“〈”字符。對于UTF-16BE編碼,如果之前的字節(jié)是空0x00字節(jié),則0x3C字節(jié)的存在標(biāo)識出“〈” 字符。并且對于UTF-16LE編碼,如果隨后的字節(jié)是空0x00字節(jié),則0x3C字節(jié)的存在標(biāo)識出“〈”字符。在識別到0x3C字節(jié)之前,框40處的決策點(diǎn)從“否”方向循環(huán)回框26,其繼而將輸入數(shù)據(jù)流中的下一個(gè)字節(jié)從數(shù)據(jù)緩沖器移動(dòng)至解析器緩沖器。
當(dāng)識別到0x3C字節(jié)時(shí),該方法沿著“是”方向轉(zhuǎn)到框42,其中將輸入數(shù)據(jù)流中的隨后的(下一個(gè)或者附加的)字節(jié)從數(shù)據(jù)緩沖器移動(dòng)至解析器緩沖器以供檢查。該方法繼續(xù)到框44處的第二決策點(diǎn),其將ASCII透明的編碼方案與UTF-16編碼方案分離開???4處的第二決策點(diǎn)確定解析器緩沖器中的當(dāng)前字節(jié)是否是空0x00字節(jié),也即,跟隨0x3C字節(jié)的字節(jié)是否是空0x00字節(jié)。如果解析器緩沖器中的當(dāng)前字節(jié)不是空0x00字節(jié),則該方法繼續(xù)從“否”方向到達(dá)框46,其標(biāo)識XML數(shù)據(jù)是ASCII透明的。因此,該方法繼續(xù)到框48,其指示使用可以從XML聲明語句中讀取的XML編碼屬性所標(biāo)識的編碼方案。然后,該方法決定存儲當(dāng)前的編碼方案,如框90所示,以用于如下詳述的方法的潛在未來使用,并且方法終止于結(jié)束框94。
如果在框44處的第二決策點(diǎn)處,確定解析器緩沖器中的當(dāng)前字節(jié)是空0x00字節(jié), 則XML數(shù)據(jù)不是ASCII透明的,而是使用UTF-16編碼方案。然而,此時(shí),UTF-16編碼方案的字節(jié)序(字節(jié)順序)仍然是未知的,并且仍然需要確定。因此,該方法繼續(xù)沿“是”方向到達(dá)框60處的第三決策點(diǎn)。
框60處的第三決策點(diǎn)是基于傳入數(shù)據(jù)流的當(dāng)前編碼方案的知識的分支。如上所述,本發(fā)明的實(shí)施方式的方法可以依賴于傳入數(shù)據(jù)流的當(dāng)前編碼方案的知識,并且在框60 處的第三決策點(diǎn)處正是這樣做的。如果XML數(shù)據(jù)是ASCII透明的,則該方法不到達(dá)框60, 并且不需要當(dāng)前編碼方案的知識。然而,如果XML數(shù)據(jù)是非ASCII透明的,則該方法必須知道傳入用于數(shù)據(jù)流中先前數(shù)據(jù)的當(dāng)前編碼方案。由此,通常在方法之前存儲和/或與方法并發(fā)地標(biāo)識傳入數(shù)據(jù)流的當(dāng)前編碼方案,其可由方法在框60處的第三決策點(diǎn)處訪問。在框 60的第三決策點(diǎn)處對傳入數(shù)據(jù)流的“當(dāng)前”編碼方案的引用描述了在框40處識別的0x3C 字節(jié)之前的數(shù)據(jù)(此處稱為傳入數(shù)據(jù)流中的“先前數(shù)據(jù)”)的已知編碼方案。通過比較,在框90處對傳入數(shù)據(jù)流的“當(dāng)前”編碼方案的引用描述了由該方法確定并且存儲在存儲器中的、用于該方法的潛在未來使用的編碼方案。
如果框40處識別的0x3C字節(jié)之前的傳入數(shù)據(jù)流中的先前數(shù)據(jù)不是以UTF-16LE 編碼的,則XML數(shù)據(jù)的字節(jié)順序可以通過檢查先前檢測的0x3C字節(jié)之前緊鄰的單個(gè)字節(jié)來確定,并且該方法繼續(xù)從“否”方向到達(dá)框62,以檢查和確定編碼方案的字節(jié)順序???2處的第四決策點(diǎn)評估檢測到的0x3C字節(jié)之前緊鄰的單個(gè)字節(jié)。如果檢測到的0x3C字節(jié)之前緊鄰的字節(jié)是空0x00字節(jié),則確定字節(jié)序是大端的,并且XML數(shù)據(jù)使用UTF-16BE編碼,如框64所識別的。否則,如果與檢測到的0x3C字節(jié)緊鄰的不是空0x00字節(jié),則確定字節(jié)序是小端的,并且XML數(shù)據(jù)使用UTF16-LE編碼,如框66所標(biāo)識的。
如果框40處識別的0x3C字節(jié)之前傳入數(shù)據(jù)流中的先前數(shù)據(jù)以UTF-16LE編碼,則可以通過檢查先前檢測的0x3C字節(jié)之前緊鄰的兩個(gè)字節(jié),來確定XML數(shù)據(jù)的字節(jié)順序,并且該方法繼續(xù)從“是”方向到達(dá)框80,以檢查和確定編碼方案的字節(jié)順序。框80處的第五決策點(diǎn)評估檢測到的0x3C字節(jié)之前緊鄰的兩個(gè)字節(jié)。如果檢測到的0x3C字節(jié)之前緊鄰的兩個(gè)字節(jié)是空0x00字節(jié),則確定字節(jié)序是大端的,并且XML數(shù)據(jù)使用UTF 16-BE編碼,如框 82所標(biāo)識的。否則,如果檢測到的0x3C字節(jié)之前緊鄰的兩個(gè)字節(jié)不是空0x00字節(jié),則確定字節(jié)序是小端的,并且XML數(shù)據(jù)使用UTF-16LE編碼,如框84所標(biāo)識的。
如上所述,隨后該方法可以依賴于框60的第三決策點(diǎn)處的當(dāng)前編碼方案的知識。 因此,在識別出XML數(shù)據(jù)的編碼方案之后,在框90處感知到的方法將當(dāng)前編碼方案存儲例如存儲器中,如元素92處所示。
當(dāng)本發(fā)明的實(shí)施方式自動(dòng)地檢測到XML數(shù)據(jù)的編碼方案之后,可以將適當(dāng)?shù)腂OM 插入到傳入數(shù)據(jù)流中,以使得XML數(shù)據(jù)是良好形成的并包含有Β0Μ,并且可以使用標(biāo)準(zhǔn)的成品解析器來解析。包括BOM的數(shù)據(jù)流可以稱為增強(qiáng)傳入數(shù)據(jù)流,例如可以將其傳遞到諸如打印機(jī)的另一設(shè)備。例如,在打印服務(wù)器或者軟件打印驅(qū)動(dòng)器由一個(gè)或者多個(gè)打印機(jī)使用的情況下,添加BOM是有益的,例如,接收增強(qiáng)傳入數(shù)據(jù)流的設(shè)備可以使用依賴于按照 UTF-16編碼方案編碼的XML的BOM的存在的已有解析器。同樣,例如,在打印機(jī)生成日志或者將XML數(shù)據(jù)從打印機(jī)傳輸至另一設(shè)備或者系統(tǒng)(諸如用于生成日志或者分析打印數(shù)據(jù)的其他設(shè)備或者系統(tǒng))的情況下,添加BOM是有益的。當(dāng)例如打印機(jī)讀取RFID標(biāo)簽并且將其與可變數(shù)據(jù)結(jié)合,并且傳輸一組XML數(shù) 據(jù)從而使外部計(jì)算機(jī)系統(tǒng)可以使RFID標(biāo)簽與可變數(shù)據(jù)相關(guān)時(shí),這種情況可能存在。
提供下面的描述和示例是為了幫助理解自動(dòng)確定編碼方案(特別是UTF-16編碼方案)的字節(jié)順序的困難和非直觀方面以及所需的功能。在XML數(shù)據(jù)串(或者文件)的開始和結(jié)束不是明確已知的流式數(shù)據(jù)中,同樣不知道以UTF-16編碼中的字節(jié)是否是最后字符的一部分或者下一個(gè)字符的開始。由此,除非當(dāng)前編碼方案對于流式數(shù)據(jù)是已知的,否則可能無法確定轉(zhuǎn)換到UTF-16編碼方案的編碼方案,包括編碼方案的字節(jié)順序。所以,例如, 如果當(dāng)前編碼方案是UTF-16BE,則查看0x3C字節(jié)之前的單個(gè)字節(jié)足以確定新的UTF-16編碼方案具有大端還是小端字節(jié)序。特別地,如果空0x00字節(jié)在0x3C字節(jié)之前,則字節(jié)序是大端的,如003C中一樣。如果空0x00字節(jié)不在0x3C字節(jié)之前,則字節(jié)序是小端的,如3C00 中一樣。然而,如果當(dāng)前編碼方案是UTF-16LE,則僅查看0x3C字節(jié)之前的單個(gè)字節(jié)不足以確定新的UTF-16編碼方案具有大端還是小端字節(jié)序,而是需要查看0x3C字節(jié)之前的兩個(gè)字節(jié)來確定新的UTF-16編碼方案具有大端還是小端字節(jié)序。
該情景在UTF-16LE到UTF-16LE的轉(zhuǎn)換情況c與UTF-16LE到UTF-16BE的轉(zhuǎn)換情況f之間的相似和差異中得到例證。這兩種轉(zhuǎn)換情況的0 /1^和〈?序列分別是OdOOOaOO 3c003f00和00d000a00003c003f。0x3C字節(jié)在兩種情況中都存在,并且跟隨有空0x00字節(jié)。并且在兩種情況中,0x3C字節(jié)之前都是空0x00字節(jié)。由此,為了確定轉(zhuǎn)換之后新的 UTF-16編碼方案是具有大端還是小端字節(jié)序,評估0x3C字節(jié)之前的兩個(gè)字節(jié)。在UTF-16LE 到UTF-16LE的轉(zhuǎn)換情況c中,0x3C字節(jié)之前是單個(gè)空0x00字節(jié),由此表示0x3C字節(jié)是 3C00UTF-16LE字符的第一個(gè)字節(jié)。在UTF-16LE到UTF-16BE的情況f中,0x3C字節(jié)之前是兩個(gè)空0x00字節(jié),由此表示0x3C字節(jié)是003C UTF-16BE字符的第二個(gè)字節(jié),其中第一在前空 0x00字節(jié)是003C UTF-16BE字符的第一個(gè)字節(jié),并且第二在前空0x00字節(jié)是0a00UTF_16LE 換行字符的第二個(gè)字節(jié)。
根據(jù)本發(fā)明實(shí)施方式的方法可以評估傳入數(shù)據(jù)流中的每個(gè)字節(jié)以標(biāo)識潛在的轉(zhuǎn)換情況,但是方法的完整范圍可以僅在識別到0x3C字節(jié)時(shí)被激活。備選地,根據(jù)本發(fā)明實(shí)施方式的方法例如可以在預(yù)期沒有轉(zhuǎn)換和〈? xml聲明語句期間的時(shí)段內(nèi),臨時(shí)掛起監(jiān)測傳入數(shù)據(jù)流中0x3C字節(jié)的存在。例如,方法可以在監(jiān)測傳入數(shù)據(jù)流的XML數(shù)據(jù)的XML語法錯(cuò)誤時(shí),臨時(shí)掛起監(jiān)測傳入數(shù)據(jù)流中0x3C字節(jié)的存在。響應(yīng)于XML語法錯(cuò)誤的檢測,該方法可以重新開始監(jiān)測傳入數(shù)據(jù)流中0x3C字節(jié)的存在。類似地,例如,方法可以在監(jiān)測傳入數(shù)據(jù)流中的結(jié)束XML聲明結(jié)束標(biāo)簽時(shí),臨時(shí)掛起監(jiān)測傳入數(shù)據(jù)流中0x3C字節(jié)的存在。響應(yīng)于結(jié)束XML聲明結(jié)束標(biāo)簽的檢測,該方法可以重新開始監(jiān)測傳入數(shù)據(jù)流中0x3C字節(jié)的存在。
作為本發(fā)明的另一示例性實(shí)施方式,可以使用打印服務(wù)器在沒有UTF-16字節(jié)序標(biāo)記(BOM)或者編碼聲明的情況下自動(dòng)地檢測和確定一個(gè)或者多個(gè)傳入XML數(shù)據(jù)流中用于 XML聲明的UTF-16編碼方案及其字節(jié)順序。響應(yīng)于UTF-16編碼方案及其字節(jié)順序的檢測和確定,打印服務(wù)器可以插入適當(dāng)?shù)摩?Μ,并且進(jìn)一步向一個(gè)或者多個(gè)打印機(jī)傳輸一個(gè)或者多個(gè)傳入XML數(shù)據(jù)流。這允許單個(gè)設(shè)備(打印機(jī))執(zhí)行在沒有UTF-16字節(jié)序標(biāo)記(BOM) 或者編碼聲明的情況下檢測和確定一個(gè)或者多個(gè)傳入XML數(shù)據(jù)流中用于XML聲明的UTF-16 編碼方案及其字節(jié)順序所需要的處理,從而允許隨后的下游設(shè)備能夠依賴于XML數(shù)據(jù)流中目前是良好形成的XML語句中的Β0Μ。
類似地,作為本發(fā)明的又一示例性實(shí)施方式,專有軟件打印驅(qū)動(dòng)可以用于執(zhí)行在沒有UTF-16字節(jié)序標(biāo)記( BOM)或者編碼聲明的情況下檢測和確定一個(gè)或者多個(gè)傳入XML 數(shù)據(jù)流中用于XML聲明的UTF-16編碼方案及其字節(jié)順序所需的處理,從而允許諸如打印機(jī)的隨后的下游設(shè)備能夠依賴于XML數(shù)據(jù)流中目前是良好形成的XML語句中的Β0Μ。
以類似的方式,在本發(fā)明的又一示例性實(shí)施方式中可以包括在一個(gè)或者多個(gè)數(shù)據(jù)源和一個(gè)或者多個(gè)其他設(shè)備之間操作的任何電子設(shè)備,用于在沒有UTF-16字節(jié)序標(biāo)記 (BOM)或者編碼聲明的情況下檢測和確定傳入至電子設(shè)備的一個(gè)或者多個(gè)傳入XML數(shù)據(jù)流中用于XML聲明的UTF-16編碼方案及其字節(jié)順序。例如,條形碼掃描儀或者RFID標(biāo)簽讀取器可以分別接收和標(biāo)識編碼在諸如條形碼或者RFID標(biāo)簽上或者其他對象中的數(shù)據(jù)或者 XML數(shù)據(jù)。而且,條形碼掃描儀或者RFID標(biāo)簽讀取器或者與條形碼掃描儀或者RFID標(biāo)簽讀取器相關(guān)聯(lián)的軟件,將接收到的數(shù)據(jù)作為XML數(shù)據(jù)或者XML數(shù)據(jù)的一部分向另一設(shè)備傳輸,或者向另一設(shè)備傳輸接收到的XML數(shù)據(jù)。因此,條形碼掃描儀或者RFID讀取器或者與條形碼掃描儀或者RFID讀取器相關(guān)聯(lián)的軟件可以(類似于打印服務(wù)器可能的)操作用以在沒有字節(jié)序標(biāo)記的情況下自動(dòng)地確定傳入至條形碼掃描儀或者RFID標(biāo)簽讀取器的傳入數(shù)據(jù)流中的UTF-16編碼方案。而且,由此,響應(yīng)于UTF-16編碼方案及其字節(jié)順序的檢測和確定,條形碼掃描儀或者RFID標(biāo)簽讀取器可以插入適合的Β0Μ,并且進(jìn)一步向一個(gè)或者多個(gè)其他設(shè)備傳輸XML數(shù)據(jù)。
以上結(jié)合打印機(jī)和打印應(yīng)用主要描述了本發(fā)明的打印機(jī)、系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品實(shí)施方式。然而,如上所述,本發(fā)明的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品實(shí)施方式可以結(jié)合多種其他應(yīng)用而使用。例如,本發(fā)明的實(shí)施方式的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品可以結(jié)合有線和/或無線聯(lián)網(wǎng)(例如因特網(wǎng))應(yīng)用而使用。
現(xiàn)在參考圖3,示出了可以受益于本發(fā)明的實(shí)體的框圖。雖然沒有示出為單獨(dú)實(shí)體,但是如上所述,在一些實(shí)施方式中,一個(gè)或者多個(gè)實(shí)體可以支持邏輯地分離但是共置在實(shí)體(或者多個(gè)實(shí)體)內(nèi)的一個(gè)或者多個(gè)打印機(jī)和/或計(jì)算系統(tǒng)。例如,單個(gè)實(shí)體可以支持邏輯分離但是共置的計(jì)算系統(tǒng)和打印機(jī)。類似地,一個(gè)或者多個(gè)實(shí)體可以支持邏輯分離但是不共置在相同實(shí)體(或者多個(gè)實(shí)體)內(nèi)的一個(gè)或者多個(gè)打印機(jī)和/或計(jì)算系統(tǒng)。
圖3的實(shí)體包括用于執(zhí)行包括此處更加具體地示出和描述的根據(jù)本發(fā)明的示例性實(shí)施方式的一個(gè)或者多個(gè)功能的各種裝置。然而,應(yīng)當(dāng)理解,在不脫離本發(fā)明的精神和范圍的情況下,實(shí)體可以包括用于執(zhí)行根據(jù)本發(fā)明的實(shí)施方式的一個(gè)或者多個(gè)功能或者類似功能的備選裝置。更具體地,例如,如圖3所示,實(shí)體可以包括處理器、控制器或者連接至存儲器326的類似的處理元件328。一個(gè)或者多個(gè)處理器可以共同用作相同的平臺的一部分, 或者處理器可以在子系統(tǒng)之間分布。存儲器可以包括易失性存儲器314和/或非易失性存儲器318,并且通常存儲內(nèi)容、數(shù)據(jù)等。例如,存儲器326通常存儲由實(shí)體傳輸和/或接收的XML數(shù)據(jù),并且還可以存儲傳入數(shù)據(jù)流的當(dāng)前編碼方案的標(biāo)識。又例如,存儲器326通常存儲諸如固件、軟件打印驅(qū)動(dòng)、操作系統(tǒng)和客戶端應(yīng)用的計(jì)算機(jī)程序代碼,以便處理器執(zhí)行與根據(jù)本發(fā)明的實(shí)施方式的實(shí)體的操作相關(guān)聯(lián)的步驟。存儲器326可以是例如只讀存儲器 (ROM)、隨機(jī)存取存儲器(RAM)、高速緩存存儲器、閃存驅(qū)動(dòng)器、硬盤驅(qū)動(dòng)器和/或其他固定數(shù)據(jù)存儲器或者存儲設(shè)備(諸如以上關(guān)于圖1的計(jì)算機(jī)系統(tǒng)112所描述的)。
如此處所述,檢測模塊330或者類似的固件或者其他計(jì)算機(jī)程序產(chǎn)品代碼邏輯可以包括由相應(yīng)的實(shí)體操作的 軟件。然而,應(yīng)當(dāng)理解,在不脫離本發(fā)明的精神和范圍的情況下,此處描述的固件、軟件或者計(jì)算機(jī)程序產(chǎn)品還可以包括一個(gè)或者多個(gè)硬件元件。然后, 通常,打印機(jī)、計(jì)算系統(tǒng)或者其他設(shè)備或系統(tǒng)可以包括用于執(zhí)行根據(jù)本發(fā)明的實(shí)施方式的各種功能的一個(gè)或者多個(gè)邏輯元件??梢岳斫猓壿嬙梢砸远喾N不同方式中的任意方式實(shí)現(xiàn)。在此方面,執(zhí)行一個(gè)或者多個(gè)客戶端應(yīng)用的功能的邏輯元件可以在軟件代碼邏輯和/或集成電路裝配中實(shí)現(xiàn),該集成電路裝配包括一個(gè)或者多個(gè)集成電路組成或者另外與相應(yīng)實(shí)體(即,打印機(jī)、計(jì)算系統(tǒng)等)或者更具體地例如相應(yīng)實(shí)體的處理器328通信。
除了存儲器326以外,處理器328還可以連接到至少一個(gè)接口或者其他裝置用以顯示、傳輸和/或接收數(shù)據(jù)、內(nèi)容等。在此方面,接口可以包括至少一個(gè)通信接口 342或者用于傳輸和/或接收數(shù)據(jù)、內(nèi)容等的其他裝置。例如,通信接口可以包括無線天線和通信接口 312,其包括發(fā)射機(jī)312和接收機(jī)346。還可以包括諸如射頻(RF)360、紅外(IR) 362,M 牙(BT) 364、通用串行總線(USB) 366, IEEE 1394 (火線)368和網(wǎng)絡(luò)接口 370(諸如用于以太網(wǎng)或者同軸連接)的附加的通信接口。除了通信接口以外,接口還可以包括用戶輸入接口 332,其可以包括諸如麥克風(fēng)、小鍵盤333、觸摸顯示器、操縱桿或者其他輸入設(shè)備335的一個(gè)或者多個(gè)設(shè)備。接口還可以包括用戶輸出接口 334,其可以包括諸如耳機(jī)和/或揚(yáng)聲器 338和顯不器337的一個(gè)或者多個(gè)設(shè)備。
實(shí)體還可以包括連接至處理器328的檢測模塊330。如上所述,此模塊可以是軟件和/或軟件-硬件組件。例如,檢測模塊330可以包括能夠接收傳入數(shù)據(jù)流并且分析傳入數(shù)據(jù)流以便在沒有UTF-16字節(jié)序標(biāo)記(BOM)或者編碼聲明的情況下自動(dòng)地檢測和確定傳入數(shù)據(jù)流中用于XML聲明的UTF-16編碼方案及其字節(jié)順序的軟件和/或軟件-硬件組件。
用于執(zhí)行根據(jù)本發(fā)明的實(shí)施方式的一個(gè)或者多個(gè)功能的計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀和計(jì)算機(jī)可用存儲介質(zhì)(諸如非易失性存儲介質(zhì))以及包括在計(jì)算機(jī)可讀和計(jì)算機(jī)可用存儲介質(zhì)上實(shí)現(xiàn)(存儲)的計(jì)算機(jī)可讀程序代碼邏輯部分的軟件(諸如一系列計(jì)算機(jī)指令)。類似地,本發(fā)明的實(shí)施方式可以并入硬件和軟件系統(tǒng)和子系統(tǒng)、硬件系統(tǒng)和子系統(tǒng)與軟件系統(tǒng)和子系統(tǒng)的組合中,以及并入網(wǎng)絡(luò)設(shè)備和系統(tǒng)及其移動(dòng)站中。
在此方面,本發(fā)明的每個(gè)框或者步驟(諸如示意性框圖和流程圖的功能)以及框和步驟的組合可以通過多種方式(諸如硬件、固件和/或包括一個(gè)或者多個(gè)計(jì)算機(jī)程序指令的軟件)實(shí)現(xiàn)。可以理解,任何此類的計(jì)算機(jī)程序指令可以加載到計(jì)算機(jī)或者其他可編程設(shè)備(即硬件)上以產(chǎn)生機(jī)器,使得在計(jì)算機(jī)或者其他可編程設(shè)備上執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)框和步驟中指定的功能的裝置。這些計(jì)算機(jī)程序指令還可以存儲在計(jì)算機(jī)可讀存儲器中,其可以指引計(jì)算機(jī)或者其他可編程設(shè)備以特定的方式運(yùn)作,以使得存儲在計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生一種包括實(shí)現(xiàn)框和步驟中指定的功能的指令裝置的產(chǎn)品。計(jì)算機(jī)程序指令還可以加載到計(jì)算機(jī)或者其他可編程設(shè)備上以產(chǎn)生一系列操作步驟,這一系列操作步驟將要在計(jì)算機(jī)或者其他可編程設(shè)備上執(zhí)行以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,以使得在計(jì)算機(jī)或者其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)框和步驟中指定的功能的步驟。
因此,示意性框圖和流程圖的框和步驟支持用于執(zhí)行指定的功能的裝置的組合、 用于執(zhí)行指定的功能的步驟的組合以及用于執(zhí)行指定的功能的程序指令裝置。還可以理解,示意性框圖和流程圖的一個(gè)或者多個(gè)框或者步驟以及示意性框圖和流程圖中的框或者步驟的組合可以通過專用的基于硬件的計(jì)算機(jī)系統(tǒng)(其執(zhí)行指定的功能或步驟)或者專用硬件和計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
如以上所述以及附圖中所示,提供了本發(fā)明的實(shí)施方式的打印機(jī)和其他計(jì)算設(shè)備、系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品,其在沒有UTF-16字節(jié)序標(biāo)記(BOM)或者編碼聲明的情況下自動(dòng)地檢測和確定傳入XML數(shù)據(jù)流中用于XML聲明的UTF-16編碼方案及其字節(jié)順序。這允許即使在XML數(shù)據(jù)不以BPM或者編碼聲明起始的時(shí)候,也可以自動(dòng)和明確地精確檢測混合編碼環(huán)境內(nèi)的(諸如來自使用不止一個(gè)編碼方案的多個(gè)源的)UTF-16編碼的XML數(shù)據(jù)。 如上所述,本發(fā)明的實(shí)施方式還允許使用支持使用不同的統(tǒng)一碼以及專有的編碼方案的傳統(tǒng)設(shè)備和系統(tǒng)的環(huán)境中的XML,以及不是XML兼容的設(shè)備和系統(tǒng)(即,諸如沒有配置用于包括用于UTF-16編碼的XML數(shù)據(jù)的BOM的設(shè)備和系統(tǒng))。
本領(lǐng)域技術(shù)人員將會想到對此處描述的本發(fā)明的多種修改和其他實(shí)施方式,屬于所述多種修改和其他實(shí)施方式的這些發(fā)明具有以上描述和相關(guān)聯(lián)的附圖中提出的教導(dǎo)的益處。因此,可以理解,本發(fā)明不限制于所公開的具體實(shí)施方式
,并且旨在將修改、等同物和其他實(shí)施方式包括在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種方法,包括在從第一編碼方案向第二編碼方案的轉(zhuǎn)換處,在沒有字節(jié)序標(biāo)記的情況下自動(dòng)確定傳入數(shù)據(jù)流中的UTF-16編碼方案,其中所述第二編碼方案是UTF-16編碼方案。
2.根據(jù)權(quán)利要求I所述的方法,其中在從所述第一編碼方案向UTF-16編碼方案的所述轉(zhuǎn)換處自動(dòng)確定UTF-16編碼方案包括 接收所述傳入數(shù)據(jù)流中的結(jié)構(gòu)標(biāo)記語言數(shù)據(jù);以及 根據(jù)自動(dòng)確定的UTF-16編碼方案來處理所述傳入數(shù)據(jù)流的隨后部分。
3.根據(jù)權(quán)利要求I所述的方法,其中自動(dòng)確定UTF-16編碼方案包括 接收所述傳入數(shù)據(jù)流中的結(jié)構(gòu)標(biāo)記語言數(shù)據(jù);以及 存儲所述傳入數(shù)據(jù)流的當(dāng)前編碼狀態(tài),作為自動(dòng)確定的UTF-16編碼方案。
4.根據(jù)權(quán)利要求I所述的方法,其中自動(dòng)確定UTF-16編碼方案包括 在打印服務(wù)器處接收所述傳入數(shù)據(jù)流中的XML數(shù)據(jù); 在所述轉(zhuǎn)換處向所述傳入數(shù)據(jù)流中插入標(biāo)識自動(dòng)確定的所述傳入數(shù)據(jù)流中的UTF-16編碼方案的字節(jié)序標(biāo)記,以創(chuàng)建增強(qiáng)的傳入數(shù)據(jù)流;以及 向打印機(jī)傳輸所述增強(qiáng)的傳入XML數(shù)據(jù)流。
5.根據(jù)權(quán)利要求I所述的方法,其中所述傳入數(shù)據(jù)流包括XML數(shù)據(jù)。
6.一種電子設(shè)備,包括處理器,配置用于接收數(shù)據(jù)流中沒有字節(jié)序標(biāo)記的結(jié)構(gòu)標(biāo)記語言數(shù)據(jù);以及在從第一編碼方案向第二編碼方案的轉(zhuǎn)換處,在沒有字節(jié)序標(biāo)記的情況下自動(dòng)確定所述結(jié)構(gòu)標(biāo)記語言數(shù)據(jù)的UTF-16編碼方案,其中所述第二編碼方案是UTF-16編碼方案。
7.根據(jù)權(quán)利要求6所述的電子設(shè)備,其中所述結(jié)構(gòu)標(biāo)記語言數(shù)據(jù)是XML數(shù)據(jù)。
8.根據(jù)權(quán)利要求6所述的電子設(shè)備,其中所述電子設(shè)備包括打印機(jī)。
9.根據(jù)權(quán)利要求6所述的電子設(shè)備,其中所述電子設(shè)備包括打印服務(wù)器。
10.根據(jù)權(quán)利要求6所述的電子設(shè)備,其中所述電子設(shè)備包括軟件打印驅(qū)動(dòng)。
11.根據(jù)權(quán)利要求6所述的電子設(shè)備,其中所述電子設(shè)備包括條形碼掃描儀。
12.根據(jù)權(quán)利要求6所述的電子設(shè)備,其中所述電子設(shè)備包括RFID讀取器/記錄器。
13.—種打印系統(tǒng),包括 第一電子設(shè)備; 打印服務(wù)器,可通信地連接至所述第一電子設(shè)備,并且配置用于從所述第一電子設(shè)備接收由所述打印服務(wù)器接收的傳入數(shù)據(jù)流中的數(shù)據(jù),其中所述打印服務(wù)器包括XML處理器,配置用于 處理所述傳入數(shù)據(jù)流,以便在從第一編碼方案向第二編碼方案的轉(zhuǎn)換處在沒有字節(jié)序標(biāo)記的情況下自動(dòng)確定所述傳入數(shù)據(jù)流中的UTF-16編碼方案,其中所述第二編碼方案是UTF-16編碼方案, 在所述轉(zhuǎn)換處向所述傳入數(shù)據(jù)流中插入標(biāo)識自動(dòng)確定的所述傳入數(shù)據(jù)流的UTF-16編碼方案的字節(jié)序標(biāo)記,以創(chuàng)建增強(qiáng)的傳入數(shù)據(jù)流,以及 傳輸所述增強(qiáng)的傳入數(shù)據(jù)流;以及 打印機(jī),可通信地連接至所述打印服務(wù)器,并且配置用于接收所述增強(qiáng)的傳入數(shù)據(jù)流。
全文摘要
本發(fā)明提供了在沒有UTF-16字節(jié)序標(biāo)記(BOM)或者編碼聲明的情況下自動(dòng)檢測和確定傳入XML數(shù)據(jù)流中用于XML聲明的UTF-16編碼方案及其字節(jié)順序的打印機(jī)和其他電子設(shè)備、系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。這允許即使在XML數(shù)據(jù)沒有以BOM或者編碼聲明開始時(shí),也可以自動(dòng)和明確地精確檢測混合編碼環(huán)境(諸如,來自使用不止一種編碼方案的多個(gè)源)內(nèi)以UTF-16編碼的XML數(shù)據(jù)。
文檔編號G06F17/22GK102982013SQ20121018122
公開日2013年3月20日 申請日期2008年7月31日 優(yōu)先權(quán)日2007年11月14日
發(fā)明者F·C·蘇希, J·S·韋特斯泰恩 申請人:Zih公司