Acara
Membangun Aplikasi dan Agen AI
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Berlaku untuk: Azure Logic Apps (Konsumsi + Standar)
Saat Anda bekerja dengan payload teks, Azure Logic Apps menyimpulkan teks dikodekan dalam format Unicode, seperti UTF-8. Anda mungkin mengalami masalah saat menerima, mengirim, atau memproses karakter dengan pengenkodean berbeda di alur kerja Anda. Misalnya, Anda mungkin mendapat karakter yang rusak dalam file datar saat bekerja dengan sistem warisan yang tidak mendukung Unicode.
Untuk bekerja dengan teks yang memiliki pengodean karakter lain, terapkan pengodean base64ToBinary ke payload non-Unicode. Langkah ini mencegah Azure Logic Apps dengan asumsi teks dalam format UTF-8. Anda kemudian dapat mengonversi pengenkodean apa pun yang didukung .NET ke UTF-8 menggunakan Azure Functions.
Solusi ini berfungsi dengan alur kerja multipenyewa dan penyewa tunggal. Anda juga dapat menggunakan solusi ini dengan konektor AS2.
Pertama, periksa apakah pemicu Anda dapat mengidentifikasi jenis konten dengan benar. Langkah ini memastikan bahwa Azure Logic Apps tidak lagi mengasumsikan teks adalah UTF-8.
Dalam pemicu dan tindakan yang memiliki properti Infer Content Type, pilih Tidak. Anda biasanya dapat menemukan properti ini dalam daftar Parameter tingkat lanjut operasi. Namun, jika operasi tidak menyertakan properti ini, jenis konten diatur oleh pesan masuk.
Daftar berikut menunjukkan beberapa konektor tempat Anda dapat menonaktifkan penyimpulan jenis konten secara otomatis:
Jika Anda menggunakan pemicu Permintaan untuk text/plain
konten, Anda harus mengatur charset
parameter yang ada di header panggilan Content-Type
. Jika tidak, karakter mungkin rusak, atau parameter tidak cocok dengan format pengodean payload. Untuk informasi selengkapnya, lihat cara menangani jenis konten text/plain
.
Misalnya, pemicu HTTP mengonversi konten masuk ke UTF-8 saat Content-Type
header diatur dengan parameter charset
yang benar:
{
"headers": {
<...>
"Content-Type": "text/plain; charset=windows-1250"
},
"body": "non UTF-8 text content"
}
Jika Anda mengatur header Content-Type
ke application/octet-stream
, Anda juga mungkin menerima karakter yang bukan UTF-8. Untuk informasi selengkapnya, lihat cara menangani application/octet-stream
jenis konten.
Sebelum Anda mengodekan konten base64 ke string, pastikan Anda mengonversi teks ke UTF-8. Jika tidak, karakter mungkin kembali rusak.
Selanjutnya, konversikan pengkodean yang didukung .NET ke pengkodean lain yang didukung .NET. Tinjau contoh kode Azure Functions atau contoh kode .NET:
Tip
Untuk aplikasi logika penyewa tunggal, Anda dapat meningkatkan kinerja dan mengurangi latensi dengan menjalankan fungsi konversi secara lokal.
Contoh berikut adalah untuk Azure Functions versi 2:
using System;
using System.IO;
using System.Text;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json;
public static class ConversionFunctionv2 {
[FunctionName("ConversionFunctionv2")]
public static IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, TraceWriter log) {
log.Info("C# HTTP trigger function processing a request.");
Encoding inputEncoding = null;
string requestBody = new StreamReader(req.Body).ReadToEnd();
dynamic data = JsonConvert.DeserializeObject(requestBody);
if (data == null || data.text == null || data.encodingInput == null || data.encodingOutput == null) {
return new BadRequestObjectResult("Please pass text/encodingOutput properties in the input JSON object.");
}
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
try {
string encodingInput = data.encodingInput.Value;
inputEncoding = Encoding.GetEncoding(name: encodingInput);
} catch (ArgumentException) {
return new BadRequestObjectResult($"Input character set value '{data.encodingInput.Value}' is not supported. Supported values are listed at https://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx.");
}
Encoding encodingOutput = null;
try {
string outputEncoding = data.encodingOutput.Value;
encodingOutput = Encoding.GetEncoding(outputEncoding);
} catch (ArgumentException) {
return new BadRequestObjectResult($"Output character set value '{data.encodingOutput.Value}' is not supported. Supported values are listed at https://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx.");
}
return (ActionResult) new JsonResult(
value: new {
text = Convert.ToBase64String(
Encoding.Convert(
srcEncoding: inputEncoding,
dstEncoding: encodingOutput,
bytes: Convert.FromBase64String((string) data.text)))
});
}
}
Contoh berikut adalah untuk digunakan dengan standar .NET dan Azure Functions versi 2:
using System;
using System.IO;
using System.Text;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json;
public static class ConversionFunctionNET
{
[FunctionName("ConversionFunctionNET")]
public static IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequest req, TraceWriter log)
{
log.Info("C# HTTP trigger function processing a request.");
Encoding inputEncoding = null;
string requestBody = new StreamReader(req.Body).ReadToEnd();
dynamic data = JsonConvert.DeserializeObject(requestBody);
if (data == null || data.text == null || data.encodingInput == null || data.encodingOutput == null)
{
return new BadRequestObjectResult("Please pass text/encodingOutput properties in the input JSON object.");
}
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
try
{
string encodingInput = data.encodingInput.Value;
inputEncoding = Encoding.GetEncoding(name: encodingInput);
}
catch (ArgumentException)
{
return new BadRequestObjectResult($"Input character set value '{data.encodingInput.Value}' is not supported. Supported values are listed at https://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx.");
}
Encoding encodingOutput = null;
try
{
string outputEncoding = data.encodingOutput.Value;
encodingOutput = Encoding.GetEncoding(outputEncoding);
}
catch (ArgumentException)
{
return new BadRequestObjectResult($"Output character set value '{data.encodingOutput.Value}' is not supported. Supported values are listed at https://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx.");
}
return (ActionResult)new JsonResult(
value: new
{
text = Convert.ToBase64String(
Encoding.Convert(
srcEncoding: inputEncoding,
dstEncoding: encodingOutput,
bytes: Convert.FromBase64String((string)data.text)))
});
}
}
Dengan menggunakan konsep yang sama ini, Anda juga dapat mengirim payload non-Unicode dari alur kerja Anda.
Dalam contoh ini, string input sampel yang dienkode base64 adalah nama pribadi yang berisi karakter beraksen :Héloïse
Contoh masukan:
{
"text": "SMOpbG/Dr3Nl",
"encodingInput": "utf-8",
"encodingOutput": "windows-1252"
}
Contoh output:
{
"text": "U01PcGJHL0RyM05s"
}
Jika Anda perlu mengirim payload non-Unicode dari alur kerja Anda, lakukan langkah-langkah untuk mengonversi muatan ke UTF-8 secara terbalik. Simpan teks dalam UTF-8 selama mungkin dalam sistem Anda. Selanjutnya, gunakan fungsi yang sama untuk mengonversi karakter UTF-8 yang dienkodekan base64 ke pengenkodean yang diperlukan. Kemudian, terapkan pendekodean base64 ke teks, dan kirim payload Anda.
Saat Anda menggunakan nilai pengembalian dari Azure Functions, pastikan untuk menggunakan fungsi base64ToBinary, bukan fungsi base64ToString.
Anda juga dapat menggunakan solusi ini dengan payload non-Unicode di konektor AS2 v2. Jika Anda tidak mengonversi payload yang Anda berikan ke AS2 ke UTF-8, Anda mungkin mengalami masalah dengan interpretasi payload. Masalah ini dapat mengakibatkan ketidakcocokan dengan hash MIC antara mitra dikarenakab karakter yang disalahartikan.
Acara
Membangun Aplikasi dan Agen AI
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangPelatihan
Jalur pembelajaran
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization