我在他的名字中附有字符「ò」。附件名稱中的UTF-8字符
使用代理,我在Domino控制檯中打印這個名稱。
在我的測試服務器上,正確打印此名稱。 在生產服務器上,「ò」被替換爲「?」字符。
是否有任何服務器參數設置?
UPDATE
我會後一些代碼,以便更好地說明情況。
我有一個Notes文檔,與名稱中包含「O」字
Field Name: $FILE
Data Type: Attached Object
Data Length: 66 bytes
Seq Num: 18
Dup Item ID: 0
Field Flags: ATTACH SIGN SEAL SUMMARY
Object Type: File
Object ID: 0022E992
Object Length: 567438
File Name: ALLEGATO A instanza fossò.pdf <-----------------------
使用代理嵌入式安裝,我想這個附件將其複製到另一個文件。要做到這一點,我通過Ajax調用它通過一個POST,傳遞到參數附件名稱
url = '/' + $F('DbJS') +'/myagent?openagent';
var pars = $H({
attachmentName: attachmentName
});
var ajReq = new Ajax.Request (
url,
{
method: "post",
parameters: pars.toQueryString(),
onComplete: doSomething
}
);
在Java代理,首先我得到的參數從POST調用
Vector attachmentNameVec = session.evaluate("@urldecode(\"UTF-8\";@left(@right(request_content; \"attachmentName=\");\"&\"))", doc);
String attachmentName= (String)attachmentNameVec.elementAt(0);
System.out.println("ATTACHMENT NAME:" + attachmentName);
在這一點上,我試着去拿那些武器。
在測試服務器,打印調試得到:
ATTACHMENT NAME: ALLEGATO A instanza fossò.pdf
在生產服務器上獲取:
ATTACHMENT NAME: ALLEGATO A instanza foss?.pdf
,因此
doc.getAttachment(attachmentName)
失敗。
信息
檢查Linux服務器confuguration,我發現這個(區域命令):
測試服務器(正確的行爲):
LANG=POSIX
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
生產服務器(錯誤行爲):
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
可能取決於此?
更新2
這些結果得到以下理查德建議:
===測試服務器(右)===
UNDECODED FILE NAME->File%201%20per%20Foss%C3%B2.txt.p7m
HEX REPRESENTATION: 46696C6525323031253230706572253230466F73732543332542322E7478742E70376D25374346696C6525323031253230706572253230466F73732543332542322E7478742E70376D
USING PLATFORM CHARSET->File 1 per Fossò.txt.p7m
===生產服務器(錯)===
UNDECODED FILE NAME->File%201%20per%20Foss%C3%B2.txt.p7m
HEX REPRESENTATION: 46696C6525323031253230706572253230466F73732543332542322E7478742E70376D25374346696C6525323031253230706572253230466F73732543332542322E7478742E70376D
USING PLATFORM CHARSET->File 1 per Foss??.txt.p7m
正如你所看到的,相同的HEX表示。
更新3
理查德的信息請
===測試服務器(正確)===
HEX for @urldecode using UTF-8
46696C6520312070657220466F7373F22E7478742E70376D7C
46696C6520312070657220466F7373F22E7478742E70376D
HEX for @urldecode using Platform
46696C6520312070657220466F7373C3B22E7478742E70376D7C
46696C6520312070657220466F7373C3B22E7478742E70376D
===生產服務器(錯誤)===
HEX for @urldecode using UTF-8
46696C6520312070657220466F73733F2E7478742E70376D7C46696C6520312070
657220466F73733F2E7478742E70376D
HEX for @urldecode using Platform
46696C6520312070657220466F73733F3F2E7478742E70376D7C46696C6520312070
657220466F73733F3F2E7478742E70376D
服務器的細節是什麼?視窗? Linux呢?哪個版本號以及哪種語言?哪個版本的Domino?您是在查看實際服務器上的本機控制檯,Domino Administrator客戶機中的遠程控制檯還是Java服務器控制器中的控制檯?那麼日誌呢?如果您從您自己的Notes客戶端打開它們,這些字符是否在這兩個服務器的日誌中正確呈現? –
Linux服務器,經驗8.5.1FP2和8.5.3FP4,英文。我正在查看Domino Administrator中的控制檯 –
這兩臺服務器是相同的Linux,相同的版本,相同的操作系統語言和安裝的Domino語言?您是否在同一Domino Administrator客戶端上查看兩個控制檯?從代理內存中的內存到您查看的實際屏幕,沿途的每一步都會引入錯誤字符轉換的可能性。如果你得到不同的結果,那麼在某個地方環境有所不同。 –