Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

.Net: Bug: BinaryContent does not decode the %xx escapes of a non-base64 data URI

Đang mở Phù hợp với người mới
#14,518 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 4 ngày

@Laurianti đang làm issue này rồi.

Từ ngày 1/10/2026.

  • #14519 của @Laurianti — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
76/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
csharp
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu tại BinaryContent.GetCachedByteArrayContent và xem lại các bài kiểm thử DataUriParser hiện có, trong đó ghi nhận rằng dữ liệu không phải base64 vẫn được escape tại đó. Xác minh việc chuyển đổi sang bytes đối với hai đầu vào được báo cáo: văn bản trở thành “A brief note” và dữ liệu nhị phân trở thành FF 00 80, với phạm vi bao phủ cho cả hai trường hợp.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

.NET triage

Describe the bug
BinaryContent, and so ImageContent and AudioContent, built from a data URI without ;base64 returns the URI's data as UTF-8 text with the %xx escapes still in it. DataUriParser follows RFC 2397, where "the data (as a sequence of octets) is represented using ASCII encoding for octets inside the range of safe URL characters and using the standard %xx hex encoding of URLs for octets outside that range".

To Reproduce

var content = new BinaryContent("data:,A%20brief%20note");
Console.WriteLine(Encoding.UTF8.GetString(content.Data!.Value.Span)); // A%20brief%20note

Data as hex:

data:,A%20brief%20note                   -> 41 25 32 30 62 72 69 65 66 25 32 30 6E 6F 74 65 ("A%20brief%20note")
data:application/octet-stream,%FF%00%80  -> 25 46 46 25 30 30 25 38 30 ("%FF%00%80")

Expected behavior
A brief note, as in the RFC 2397 example ("The URL data:,A%20brief%20note encodes the text/plain string "A brief note""), and the three octets FF 00 80.

Platform

  • Language: C#
  • Source: NuGet Microsoft.SemanticKernel.Abstractions 1.80.1, also main at 58ad1a378
  • OS: Linux (mcr.microsoft.com/dotnet/sdk:10.0)

Additional context
BinaryContent.GetCachedByteArrayContent returns Encoding.UTF8.GetBytes(parsedDataUri.Data) for non-base64 data. DataUriParser keeps the data escaped (its tests expect A%20brief%20note), so the decoding belongs to the conversion to bytes.

Ngôn ngữ chính
C#
Star
28.6k
Fork
4.8k
Merge trung bình
1 ngày 18 giờ
Pull request đã merge (30 ngày)
19

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/semantic-kernel

Tất cả issue của microsoft/semantic-kernel

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.