Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

317
Views
Accessing S3 multibyte Unicode character filename files using TypeScript (JavaScript) from the browser

I am updating an Angular web application to play any spoken language audio files retrieved from an AWS S3 bucket. Many of the files in the S3 bucket have (will have) multibyte-Unicode file names (because the application will be supporting global users). AWS (S3) is encoding the filename in a manner that I cannot easily replicate in the browser. An application backend Lambda function sends the filename of the audio file to retrieve and the Angular application then instantiates a HTMLAudioElement which sends an HTTP GET request to S3.

A. Filename as on Windows (before upload to S3):
Godzilla [Blue Öyster Cult] instrumental #12.wav

B. Filename as ingested with the S3 console:
Godzilla %5BBlue %C3%96yster Cult%5D instrumental %2312.wav

C. Filename as shown in the S3 console:
Godzilla+%5BBlue+%C3%96yster+Cult%5D+instrumental+%2312.wav

D. Filename as returned from the application backend Lambda:
Godzilla [Blue Öyster Cult] introduction #12.wav

E. The HTTP GET browser audio.load() filename:
Godzilla+[Blue+O%CC%88yster+Cult]+introduction+%2312.wav

Note: D & E (above) were determined using the browser network development tool

The file was uploaded to S3 via the S3 console from Windows. The filename that's saved in the backend RDS database matches the Windows filename. Because the Lambda is retrieving the filename from the RDS database the Lambda is returning the Windows filename to the Angular UI on the browser. The browser audio.load() is converting the multibyte Ö incorrectly to access the file on S3 (browser: O%CC%88yster (UTF-8 COMBINING DIAERESIS) vs. S3: %C3%96yster). It looks like the browser is focused on converting the accent instead of a multibyte character as S3 seems to have done.

I am not allowed to strip the multibyte characters in favor of an ASCII character set. I'm looking for a way (without hand coding mappings for every possible multibyte-character conversion) (and ideally without a new dependency) to "convince" the browser to behave in the same way that S3 does... I guess the question boils down to, "What is S3's logic for converting multibyte characters in files names?" Can anyone offer an approach to achieve this?

Note: The Angular application already has logic to handle the typical S3 special character cases correctly. This question is just focused upon international character sets.

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!