From 48659c5df418fbe9bf34d0d563ed93f65b9af3d3 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Sun, 28 Feb 2016 13:37:01 -0800 Subject: [PATCH] Fix #1896 (bungled fix to #1895) --- beets/mediafile.py | 4 ++-- test/test_mediafile_edge.py | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/beets/mediafile.py b/beets/mediafile.py index 02befcbb01..c6d265b405 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -215,9 +215,9 @@ def _sc_decode(soundcheck): used by ReplayGain. """ # We decode binary data. If one of the formats gives us a text - # string, guess that it's UTF-8. + # string, interpret it as UTF-8. if isinstance(soundcheck, unicode): - soundcheck = soundcheck.decode('utf8') + soundcheck = soundcheck.encode('utf8') # SoundCheck tags consist of 10 numbers, each represented by 8 # characters of ASCII hex preceded by a space. diff --git a/test/test_mediafile_edge.py b/test/test_mediafile_edge.py index 298cb6dc18..da522cd3d7 100644 --- a/test/test_mediafile_edge.py +++ b/test/test_mediafile_edge.py @@ -313,6 +313,13 @@ def test_special_characters(self): self.assertEqual(gain, 0.0) self.assertEqual(peak, 0.0) + def test_decode_handles_unicode(self): + # Most of the time, we expect to decode the raw bytes. But some formats + # might give us text strings, which we need to handle. + gain, peak = beets.mediafile._sc_decode(u'caf\xe9') + self.assertEqual(gain, 0.0) + self.assertEqual(peak, 0.0) + class ID3v23Test(unittest.TestCase, TestHelper): def _make_test(self, ext='mp3', id3v23=False):