Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #4886 'invalid byte sequence' error when subscribing to playlists #4887

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

DmitrySandalov
Copy link
Contributor

@DmitrySandalov DmitrySandalov commented Aug 28, 2024

Fixes #4886

In Crystal, handling multi-byte sequences in UTF-8 requires understanding that slicing by bytes can lead to invalid sequences if the slicing isn't aligned with character boundaries. In this case, attempting to slice a string by bytes can cut through multi-byte UTF-8 sequences, leading to invalid sequences.

To avoid this, strings should be sliced based on characters rather than bytes.

Explanation:

  1. str.chars: Converts the string to an array of characters, which allows you to handle slicing based on characters rather than bytes.
  2. chars[start_index, length]: Slices the array of characters, which is safe for UTF-8 as it ensures no multi-byte sequences are broken.
  3. sliced_chars.join: Joins the sliced characters back into a string.

This approach ensures that the slicing respects the boundaries of UTF-8 characters and avoids invalid byte sequences.

@DmitrySandalov DmitrySandalov requested a review from a team as a code owner August 28, 2024 22:04
@DmitrySandalov DmitrySandalov requested review from syeopite and removed request for a team August 28, 2024 22:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug] Subscription to Playlist Fails with 'invalid byte sequence' error
2 participants