代码之家  ›  专栏  ›  技术社区  ›  Ege Bayrak

使用角度文本区域控件时,以错误格式保存到数据库的土耳其语字符

  •  1
  • Ege Bayrak  · 技术社区  · 6 年前

    textarea ,对于 input

    我使用以下字符进行测试:“?”

    下面是我的HTML 输入 文本区域

    <div class="col-md-12">
        <div class="row defMarginBottom">
            <div class="col-md-6">
                <label>Mesaj Konusu</label>
                <input type="text" class="form-control" placeholder="Konu"
                       ng-model="titleText" />
            </div>
        </div>
        <div class="row defMarginBottom">
            <div class="col-md-3">
                <label>Ä°nternet Adresi Konusu</label>
                <input type="text" class="form-control"
                       placeholder="Ä°nternet Adresi Konusu"
                       ng-model="additionalDataSubject" />
            </div>
            <div class="col-md-3 defMarginLeft1_3">
                <label>Ä°nternet Adresi Linki</label>
                <input type="text" class="form-control"
                       placeholder="Ä°nternet Adresi Linki"
                       ng-model="additionalDataLink" />
            </div>
        </div>
        <div class="row defMarginBottom">
            <div class="col-md-6">
                <label>Mesaj</label>
                <textarea class="form-control defHeight"
                          placeholder="Mesaj" ng-model="message">
                </textarea>
            </div>
        </div>
        <div class="row">
            <input style="margin-left:1.5%;" type="button"
                   class="btn btn-success" value="Kaydet ve Gönder"
                   ng-click="saveAndSend()" />
        </div>
    
    </div>
    

    以下是定义ng模型的角度控制器代码:

    var jsonObj = {
        "Subject": $scope.additionalDataSubject,
        "Link": $scope.additionalDataLink
    };
    
    var obj = {
        "ActivityTypeIds": activityTypeIdList,
        "SalesPersonID": $scope.salesPersonId,
        "SalesPersons": $scope.spIdList,
        "CustomerCategories": categoryIdList,
        "customerName": $scope.customerName,
        "StartDate": $scope.startDate,
        "EndDate": $scope.endDate,
        "TitleText": $scope.titleText,
        "Message": $scope.message,
        "AdditionalData": JSON.stringify(jsonObj)
    };
    

    当我输入测试字符串时,只有 文本区域

    那些是为了 输入 控件错误地保存为: &#214;&#350;&#286;&#220;&#304;&#199; &#246;&#351;&#287;&#252;&#305;&#231;

    注意:我最近在我的Angular应用程序中添加了以下新指令,作为对XSS攻击的保护,并怀疑是它导致了问题,但是由于 文本区域 是否正确保存,我不确定是否相关。

    .directive('input',['$sanitize', function ($sanitize) {
        return {
            restrict: 'E',
            require: '?ngModel',
            link: function (scope, element, attrs, ngModel) {
                if (ngModel !== undefined && ngModel != null) {
                    ngModel.$parsers.push(function (value) {
                        return $sanitize(value);
                    });
                }
            }
        };
    }]);
    

    我怎样才能克服这个问题?这里的大多数问题是关于土耳其字符的渲染,而不是关于保存它们。

    0 回复  |  直到 6 年前
    推荐文章