これは非常に古いPerlモジュールであることが分かりました(最後のアップデートから5年前)。私はそれがPerlにある必要がある私がやっているプロジェクトにとって有益だとわかりました。ボトムアップから始めるのではなく、これが基本を行うのに役立つことがわかった。私はすでにそれにいくつかのバグを修正しました - しかし、これは私が問題になっているモジュールであるNet :: Kashflow - utf8の説明では機能しません
把握することはできません:https://github.com/simoncozens/Net-KashFlowは
問題と使用例は次のとおりです。
my $kf = Net::KashFlow->new(username => q|[email protected]|, password => "xxxx");
my $i = $kf->create_invoice({
CustomerReference => "0123-1111111", CustomerID => 50108952,
CurrencyCode => "EUR"
}) || die $!;
$i->add_line({
Quantity => 1,
Description => "íéó foo bar test",
Rate => 10,
VatAmount => 4,
VatRate => 0,
CurrencyCode => "GBP"
});
こちらは追加されるが、 "説明" の値は、に変換される:
7enzIGZvbyBiYXIgdGVzdAの==
通常のa-z 0-9を使用すると、正常に動作し、正しく表示されます。問題は、base64へのエンコーディング、そしてもう一方の端で正しくデコードされていないようです。私の推測では、KashFlowはこれを "修正"するつもりではないので、実際にこの目的を達成する必要があります。私はSOAP :: Liteモジュールに精通していません(やはりかなり古いモジュールです)が、それが使用しているものです。
これは私が請求書に新しい「行」を追加することを扱っていると思い一部です。これを調査した結果
https://securedwebapp.com/api/service.asmx?op=InsertInvoiceLine
、:
InsertInvoiceLine => {
endpoint => 'https://securedwebapp.com/api/service.asmx',
soapaction => 'KashFlow/InsertInvoiceLine',
namespace => 'KashFlow',
parameters => [
SOAP::Data->new(name => 'UserName', type => 'xsd:string', attr => {}),
SOAP::Data->new(name => 'Password', type => 'xsd:string', attr => {}),
SOAP::Data->new(name => 'InvoiceID', type => 'xsd:int', attr => {}),
SOAP::Data->new(name => 'InvLine', type => 'tns:InvoiceLine', attr => {}),=> {})
], # end parameters
}, # end InsertInvoiceLine
あなたが現在の構造を見ることができますSOAP :: Lite〜をに変換すると、utf8をbase64に変換することをお勧めします(私は仮定します)。
構造である:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<InsertInvoiceLine xmlns="KashFlow">
<UserName>string</UserName>
<Password>string</Password>
<InvoiceID>int</InvoiceID>
<InvLine>
<Quantity>decimal</Quantity>
<Description>string</Description>
<Rate>decimal</Rate>
<ChargeType>int</ChargeType>
<VatRate>decimal</VatRate>
<VatAmount>decimal</VatAmount>
<ProductID>int</ProductID>
<Sort>int</Sort>
<ProjID>int</ProjID>
<LineID>int</LineID>
<ValuesInCurrency>integer</ValuesInCurrency>
</InvLine>
</InsertInvoiceLine>
</soap:Body>
</soap:Envelope>
だから、そのボディ> InsertInvoiceLine> InvLine>説明のように見えます..しかし、私はその特定の文字列をエンコードしていないことを伝えることができるかわかりませんよ。
アドバイスをいただければ幸いです。大きなショーストッパーではない(すべてのデータがシステム内にあるので)、期待通りアイテム名を表示する方がはるかに良い/簡単でしょう:)
ありがとう!
返信いただきありがとうございますブライアン。私はそれが簡単ではないと感じていました。私は "普通の"文字の代わりに 'tr {ÀÂÄAâäÇçÉÊÈÊéèÏÏÌÎïìîÔîÖÔÒöÜÜÛÙüûù} {AAAaaaCcEEEEeeeeIIIiiiOOOoooUUUuuu}を実行するつもりだと思っています。これは自分のためのバックエンド請求書システムに過ぎないので、彼らは適切なアクセントを持っています –