javascript - utf8 - La desinfección por conversión angular falla con los caracteres UTF
utf-8 html (2)
En Angular 1.3.x con la última versión de angular-translate. Al usar $sanitize
, parece que hay problemas al usar el filtro o el servicio directamente, pero funciona al usar la directiva.
Sugerencias?
Aquí hay un ejemplo:
var myApp = angular.module(''myApp'', [ ''pascalprecht.translate'', ''ngSanitize'' ]);
myApp.config(function($translateProvider) {
$translateProvider.useSanitizeValueStrategy("sanitize");
$translateProvider.preferredLanguage(''en'');
$translateProvider.translations(''en'', {
UTF: ''öéü'',
});
});
myApp.controller("myCtrl", function($scope, $translate) {
$translate("UTF").then(function(trans) {
$scope.UTFCTRL = trans;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular-sanitize.min.js"></script>
<script src="http://rawgit.com/PascalPrecht/bower-angular-translate/master/angular-translate.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<div>
Wrong: <h1>{{ ''UTF'' | translate }}</h1>
</div>
<div>
Ok: <h1 translate="UTF"></h1>
</div>
<div>
Wrong: <h1>{{ UTFCTRL }}</h1>
</div>
</div>
En jsfiddle: http://jsfiddle.net/gnvpo6aa/
Como se dijo en el tema gitHub
Usando SCE resuelto el problema
$translateProvider.useSanitizeValueStrategy("sce");
En este momento, tienes dos opciones:
- Utilice la estrategia
sanitizeParameters
que solo saneará los parámetros dinámicos, pero no la traducción real (plantilla). Si tiene la traducción bajo control (pero no los valores dinámicos), esto funcionará. - Use la estrategia de
escape
(oescapeParameters
) que no usa el saneamiento sino el escape.
Descargo de responsabilidad: estoy co-mantenimiento de traducción angular.
Edición (12.01.2016): había creado esta descripción general de la matriz de todas las variantes .