Index: tests/t3lib/t3lib_pagerenderer_testcase.php =================================================================== --- tests/t3lib/t3lib_pagerenderer_testcase.php (Revision 6571) +++ tests/t3lib/t3lib_pagerenderer_testcase.php (Arbeitskopie) @@ -634,8 +634,22 @@ $out ); } - - + /** + * Tests whether labels are delivered in a non-UTF-8 context. + * (background: json_encode() requires UTF-8 to work properly) + * + * @test + */ + public function isInlineLanguageLabelDeliveredWithNonUTF8() { + $testPrefix = uniqid('test'); + $this->fixture->loadExtCore(); + $this->fixture->setCharSet('iso-8859-1'); + $this->fixture->addInlineLanguageLabel($testPrefix, $testPrefix . "_\xd8"); + + $out = $this->fixture->render(); + + $this->assertContains($testPrefix . '_\\u00d8', $out); + } } ?> \ No newline at end of file Index: t3lib/class.t3lib_pagerenderer.php =================================================================== --- t3lib/class.t3lib_pagerenderer.php (Revision 6571) +++ t3lib/class.t3lib_pagerenderer.php (Arbeitskopie) @@ -128,6 +128,7 @@ public function __construct($templateFile = '', $backPath = NULL) { $this->reset(); + $this->csConvObj = t3lib_div::makeInstance('t3lib_cs'); if (strlen($templateFile)) { $this->templateFile = $templateFile; @@ -1193,6 +1194,16 @@ ); } + // Convert labels/settings back to UTF-8 since json_encode() only works with UTF-8: + if ($this->getCharSet() !== 'utf-8') { + if ($this->inlineLanguageLabels) { + $this->csConvObj->convArray($this->inlineLanguageLabels, $this->getCharSet(), 'utf-8'); + } + if ($this->inlineSettings) { + $this->csConvObj->convArray($this->inlineSettings, $this->getCharSet(), 'utf-8'); + } + } + $inlineSettings = $this->inlineLanguageLabels ? 'TYPO3.lang = ' . json_encode($this->inlineLanguageLabels) . ';' : ''; $inlineSettings .= $this->inlineSettings ? 'TYPO3.settings = ' . json_encode($this->inlineSettings) . ';' : '';