base64文字列をデコードしようとしています
Sample:='MEIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECO9X2Lfq3EYMBBiX0/4McWT3y6hWMvOJvH5MwD22EOvPbLQ=';
Result:=DecodeString(Sample);
エラーが発生しました:「ターゲットのマルチバイトコードページにUnicode文字のマッピングが存在しません」。私は何が間違っているのですか?
あなたのコードサンプルは不完全ですが、私はそれDecodeString
がからの関数であると推測することしかできませんSoap.EncdDecd
。その仮定を考えると、への呼び出しDecodeString
は確かにあなたが説明する例外を引き起こします。
例外は、バイナリデータとテキストデータが交換可能であるという非常に一般的な誤解によって引き起こされます。電話をかけるDecodeString
と、実際には2つの操作を実行するように求められます。
base64データが有効であるため、これらの操作の最初の操作は成功します。バイナリデータが有効なUTF-8エンコードテキストではないため、2番目の操作は失敗します。
非常に一般的ではありますが、バイナリデータ(バイトの配列)を文字列として扱いたいという誤った間違いを犯している可能性があります。文字列はバイトの配列と同じものではありません。
バイナリデータがあるので、次のように扱います。
uses
System.NetEncoding;
var
base64: string;
bytes: TBytes;
....
base64 := 'MEIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECO9X2Lfq3EYMBBiX0/4McWT3y6hWMvOJvH5MwD22EOvPbLQ=';
bytes := TNetEncoding.Base64.DecodeStringToBytes(base64);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加