Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Türkçe Karekter sorunu ( Web Servis)
#1
Photo 
Merhaba,

firedac componetini kullaniyoruz. mysql db de collection tarafını nasıl ayarlayabiliriz. türkçe karakterlerde sorun yaşıyoruz.

Yazılan programın web servisinde Türkçe karekter sorunu var. Veriler database'e Türkçe olarak geliyor. Fakat formda güncelleme yapında karekterler bozuluyor.

ekran görüntüleri,

(unable to decode value) hatası alıyoruz.


https://imgyukle.com/i/rnp3pv
https://imgyukle.com/i/rnptJ6
https://imgyukle.com/i/rnp8Zx
https://imgyukle.com/i/rnz0nv

ö ç ğ ü ş i  karekterlerinde sorun oluyor.
Cevapla
#2
https://www.dijitalders.com/icerik/12/15...blemi.html

Selamlar, bağlanıp baktım ama konu web servislerini ve json encode işlemlerini kapsıyor. dolayısıyla, sorunu içeren ekranı buraya koyarsanız ve hatayı da tekrar senaryosu ile birlikte yazarsanız, formdaki üstadlar tarafından daha net anlaşılır olacaktır.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#3
Firedac tarafında connection editorde CharacterSet var. Onu değiştirebilirsiniz(UTF8 vs). 
DBye karakterlerin düzgün geldiğini söylediğiniz için bundan dolayı olacağını sanmıyorum ama denemekten zarar gelmez Smile

Screen-Shot-2015-04-09-at-15.21.03.png
There's no place like 127.0.0.1
WWW
Cevapla
#4
(28-04-2020, Saat: 11:52)SimaWB Adlı Kullanıcıdan Alıntı: Firedac tarafında connection editorde CharacterSet var. Onu değiştirebilirsiniz(UTF8 vs). 
DBye karakterlerin düzgün geldiğini söylediğiniz için bundan dolayı olacağını sanmıyorum ama denemekten zarar gelmez Smile

Screen-Shot-2015-04-09-at-15.21.03.png
o kısımda denedi ama çözüm olmadı.  
https://imgyukle.com/i/rn2o1R

Ücret bukabilidne bu sorunu çözecek yiğit aranıyor Smile
Cevapla
#5
(28-04-2020, Saat: 10:21)folsec Adlı Kullanıcıdan Alıntı: Merhaba,

firedac componetini kullaniyoruz. mysql db de collection tarafını nasıl ayarlayabiliriz. türkçe karakterlerde sorun yaşıyoruz.

Yazılan programın web servisinde Türkçe karekter sorunu var. Veriler database'e Türkçe olarak geliyor. Fakat formda güncelleme yapında karekterler bozuluyor.

ekran görüntüleri,

(unable to decode value) hatası alıyoruz.


https://imgyukle.com/i/rnp3pv
https://imgyukle.com/i/rnptJ6
https://imgyukle.com/i/rnp8Zx
https://imgyukle.com/i/rnz0nv

ö ç ğ ü ş i  karekterlerinde sorun oluyor.

Merhaba,

Yapı hakkında bilgi yazmalısınız.
1-Web servis hangi işletim sistemi üzerinde
2-Formu güncelleme işlemini hangi kodlarla nasıl yapıyorsunuz.

İyi çalışmalar.
Cevapla
#6
1. işletim sistemi windows 2019  ve windows 2010 üzerinden denendi.  ülke kodlar USA
2. html kısmı aşadır.

<!DOCTYPE html>
<html lang="en">
<!--================================================================================
Item Name: Materialize - Material Design Admin Template
Version: 4.0
Author: PIXINVENT
Author URL: https://themeforest.net/user/pixinvent/portfolio
================================================================================ -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<head>
  {{Include(['include\\header.html'])}}
</head>
<body id="layouts-horizontal">
  <!-- Start Page Loading -->
  <div id="loader-wrapper">
    <div id="loader"></div>
    <div class="loader-section section-left"></div>
    <div class="loader-section section-right"></div>
  </div>
  <!-- End Page Loading -->
  <!-- //////////////////////////////////////////////////////////////////////////// -->
  <!-- START HEADER -->
  <header id="header" class="page-topbar">
    <div class="navbar-fixed">
      {{Include(['include\\topmenu.html'])}}
    </div>
  </header>
  <!-- END HEADER -->
  <!-- //////////////////////////////////////////////////////////////////////////// -->
  <!-- START MAIN -->
  <div id="main">
    <!-- START WRAPPER -->
    <div class="wrapper">
      <!-- START LEFT SIDEBAR NAV-->
      <!-- END LEFT SIDEBAR NAV-->
      <!-- //////////////////////////////////////////////////////////////////////////// -->
      <!-- START CONTENT -->
      <section id="content">
        <!--start container-->
        <div class="container" style="margin-top:90px;">
          <!--
            jQuery Validation Plugin
        -->
          <p class="caption">Edit Member</p>
          <div class="divider"></div>
          <!--jqueryvalidation-->
          <div id="jqueryvalidation" class="section" style="padding-top:0px; margin-top:-20px;">
            <div class="row">
             <form id="formUser" method="post" action="/?page=editmember">
              <div class="col s12 m12 l6">
                <div class="card-panel" style="height:320px;">
                  <div class="row">
                      <input type="hidden" name="id" id="dataid" value="0" />
                      <div class="row">
                        <div class="input-field col s12">
                          <span for="username">Username</span>
                          <input id="username" name="username" type="text" value="" />
                        </div>
                        <div class="input-field col s12">
                          <span for="password">Password</span>
                          <input id="password" name="password" type="password" value="" />
                        </div>
                        <div class="input-field col s12">
                          <span for="fullname">Full Name</span>
                          <input id="fullname" name="fullname" type="text" value="" />
                        </div>
                      </div>

                      <br>
                      <b style="color:red; display:none;" class="user-warning-msg">
                        <i class="material-icons" aria-hidden="true">warning</i>
                        Only if the Users option is selected. That user can only request folder permissions.
                      </b>
                   
                  </div>
                </div>
              </div>
<div class="col s12 m12 l6">
<div class="card-panel">
                  <div class="row">
<div class="input-field col s12">
<span for="ou">OU</span>
<input id="ou" name="ou" type="text" value="" />
</div>
<div class="input-field col s12">
<span for="email">Email</span>
<input id="email" name="email" type="email" value="" />
</div>

<div class="col s12">
<div class="col s2">
<div class="switch">
<label style="font-size:18px;">
User<br>
<input id="isuser" name="isuser" type="checkbox" value="1" onclick="if(this.checked){ $('[name=isdisable],[name=isadmin]').prop('checked',false); $('.user-options').show(); }else{ $('.user-options').hide(); }; " >
<span class="lever"></span>
</label>
</div>
</div>
<div class="col s2">
<div class="switch">
<label style="font-size:18px;">
Admin<br>
<input id="isadmin" name="isadmin" type="checkbox" value="1" onclick="if(this.checked){ $('[name=isuser],[name=isdisable]').prop('checked',false); $('.user-options').hide(); }" >
<span class="lever"></span>
</label>
</div>
</div>
<div class="col s2">
<div class="switch">
<label style="font-size:18px;">
Disabled<br>
<input id="isdisable" name="isdisable" type="checkbox" value="1" onclick="if(this.checked){ $('[name=isuser],[name=isadmin]').prop('checked',false); $('.user-options').hide(); }" >
<span class="lever"></span>
</label>
</div>
</div>
</div>

<div class="col s12 user-options" style="padding: 20px 0px 0px 20px; line-height: 35px; display:none;">

<div class="switch">
<label>    
<input type="checkbox" name="authority[]" id="permission_check" value="permission" />
<span class="lever"></span>
Permission Perspective    
</label>
</div>

<div class="switch">
<label>    
<input type="checkbox" name="authority[]" id="audit_check" value="audit" />
<span class="lever"></span>
Audit Perspective    
</label>
</div>

<div class="switch">
<label>    
<input type="checkbox" name="authority[]" id="filetype_check" value="filetype" />
<span class="lever"></span>
File Type Perspective
</label>
</div>
</div>

<div class="input-field col s12">
<button class="btn waves-effect waves-light right submit" type="submit" name="action">Submit
<i class="material-icons right">send</i>
</button>
</div>
</div>
</div>
</div>
     
          <div style="clear:both;"></div>

          <div class="row" style="padding:15px;">
            <div class="permission_config" style="display:none;">
              <h4 class="header" style="margin:15px 0px 0px;">Permission Perspektif</h4>
              <div class="row">

                <div class="col s12" style="color:red;">
                  The user can only manage permissions on selected folders.
                </div>

                <div class="col s12">
                  <div class="col s3" style="min-height:300px; border:1px solid #eaeaea; padding:25px;">
                    <div class="tree-scroll-bar">
                      <!--<div class="row">
                        <input type="text" name="serachbox" id="searchbox" value="" placeholder="Search" />
                      </div>-->
                      <div class="row">
                        <table id="treegrid" style="width: 97%;">
                          <thead>
                          <tr>
                            <th>Server</th>
                          </tr>
                          </thead>
                          <tbody>

                          </tbody>
                        </table>
                      </div>

                    </div>
                  </div>
                  <div class="col s2">
                    <div style="padding-top: 150px">

                      <button class="btn waves-effect waves-light cyan submit add-manage-btn" type="button" name="action" style="width:100%; background: #fff;">Add Manage
                        <i class="material-icons right">send</i>
                      </button>

                      <br><br>

                      <button class="btn waves-effect waves-light red accent-2 delete-button" type="button" name="action" style="width:100%; ">Remove
                      <i class="material-icons right">close</i>
                      </button>

                    </div>
                  </div>
                  <div class="col s7">
                    <form name="scanlist" id="scanform">
                      <div class="row">
                        <div class="col s12">      
           
                          <input type="text" class="form-control folder-search" placeholder="Search ..." style="width:98%" />

                          <div id="folder_list" style="overflow: auto; height: 250px !important; border: 1px solid #dadada;"></div>

                          <textarea name="folder_list" style="display:none;"></textarea>

                        </div>
                      </div>
                    </form>
                  </div>

                </div>
              </div>
            </div>
          </div>

 </form>
            </div>
          </div>

        </div>
        <!--end container-->
      </section>
      <!-- END CONTENT -->
      <!-- //////////////////////////////////////////////////////////////////////////// -->
    </div>
    <!-- END WRAPPER -->
  </div>
  <!-- END MAIN -->
  <!-- //////////////////////////////////////////////////////////////////////////// -->
  <!-- START FOOTER -->
  {{Include(['include\\footer.html'])}}

  <style>
  #folder_list div {
      border-bottom: 1px solid silver;
      padding: 1px 5px;
  }
  #folder_list .ui-selecting { background: #d6e1ff; }
  #folder_list .ui-selected { background: #4875f3; color: white; }
  </style>

  <script type="text/javascript">

    $('#isuser,#isadmin,#isdisable,#permission_check,#audit_check,#filetype_check').click(function(){

       if($('#isuser').is(':checked') &&
        !$('#permission_check').is(':checked') &&
        !$('#audit_check').is(':checked') &&
        !$('#filetype_check').is(':checked')
        ){
          $('.user-warning-msg').show();
        }else{
          $('.user-warning-msg').hide();
        }
    });

      var selectedFolderPath = "";
      var sTitle = "";

        function initTreeGrid() {
          $("#treegrid").fancytree({
              extensions: ["table"],
              checkbox: false,
              table: {
                  indentation: 20,      // indent 20px per node level
                  nodeColumnIdx: 0,     // render the node title into the 2nd column
                  checkboxColumnIdx: 0  // render the checkboxes into the 1st column
              },
              source: {
                  url: "?call=GetServerListAsJson&title="+ sTitle
              },
              lazyLoad: function(event, data) {
                  data.result = {url: "?call=GetFolderListAsJson&server_id="
                          + data.node.data.server_id
                          + "&parent_id=" + data.node.data.parent_id
                          + "&id=" + data.node.data.id +"&title="+ sTitle}
              },
              renderColumns: function(event, data) {
                  var node = data.node,
                      $tdList = $(node.tr).find(">td");

              }
          });

          $("#treegrid").on("click", ".fancytree-node", function(e){
              var node = $.ui.fancytree.getNode(e);
              if (node.parent.key == 'root_1'){
                  $('#addnewtrustee-div').hide();
                  // e.stopPropagation();
                  return;
              }

              selectedFolderPath = node.data.full_path;

              // e.stopPropagation();

          });
      }

      function folderlistSetValue()
      {
        var val = $('#folder_list div').map(function(){ return $(this).attr("value"); }).toArray().join("\n");

        $("[name=folder_list]").val(val);
      }


function updateMember(){
var userid = getQueryParameterByName('id');
$.ajax({
url: $('#formUser').attr('action'),
type: 'POST',
data: $('#formUser').serialize(),
success:function(data) {
console.log(data);
}
});
}

      $(document).ready(function () {

          initTreeGrid();

var userid = getQueryParameterByName('id');

          $("#permission_check").click(function(){
              $('.permission_config').hide();
              if($('#permission_check').prop('checked')){
                $('.permission_config').show();
              }
          });

          $('#searchbox').change(function () {
              sTitle = $(this).val();
              $("#treegrid").fancytree("destroy");
              initTreeGrid();
          });

          $('.folder-search').keyup(function () {
            var val = $(this).val();

            if(val==""){ $('#folder_list div').show(); }
            else{
              $('#folder_list div').hide();

              $('#folder_list div').each(function(){
                if($(this).attr("value").toLowerCase().indexOf(val)!=-1)
                {
                  $(this).show();
                }
              });
            }
           
        });

          $('.delete-button').click(function () {
            var sel = $('#folder_list .ui-selected:visible');

            if(sel.length==0){
              swal("Alert!", "Please select folder", "warning");
              return;
            }

            sel.each(function (i, item) {
                $.ajax({
                    "url" : "/?page=newmember&&action=DeleteAccessedFolder",
                    "type": "post",
                    "data": {folder_path: $(item).attr("value"), user_id: userid},
                    "success": function (data) {
                    }
                });
                $(item).remove();
            });

            folderlistSetValue();

          });

          $('.add-manage-btn').click(function () {

              if ($("#folder_list [value='"+selectedFolderPath+"']").length == 0) {
                  $('#folder_list').append($('<div/>', {
                      value: selectedFolderPath,
                      text: selectedFolderPath
                  }));
                  folderlistSetValue();

                  $.ajax({
                    "url": "?page=newmember&&action=AddAccessedFolder",
                    "type": "post",
                    "data": {folder_path: selectedFolderPath, user_id: userid},
                    success: function (data) {
                    }
                  });
              }
          });

          $( document ).on("click","#folder_list div",
            function(){
              $("#folder_list .ui-selected").removeClass("ui-selected");
              $(this).addClass("ui-selected");
            }
          );

          $('#dataid').val(userid);

          $.ajax({
              "url" : "/?call=GetAdminDetailByMemberIdAsJSON",
"data": {id: userid},
              "type": "get",
              "success": function (data) {
                  var dataJ = JSON.parse(data);
                  $('#username').val(dataJ.username);
                  $('#username').focus();
                  $('#password').val(dataJ.password);
                  $('#password').focus();
                  $('#fullname').val(dataJ.fullname);
                  $('#fullname').focus();
                  $('#email').val(dataJ.email);
                  $('#email').focus();
                  $('#ou').val(dataJ.ou);
                  $('#ou').focus();
                  $('#username').focus();

            //if domain user, read only
            if(dataJ.username.indexOf("\\")!=-1)
            {
            $('#username,#password,#fullname,#email,#ou').attr("readonly",true);
            }

                  $('#isuser').prop('checked', dataJ.is_user == '1');
                  $('#isadmin').prop('checked', dataJ.is_admin == '1');
                  $('#isdisable').prop('checked', dataJ.is_disable == '1');

                  $('#permission_check').prop('checked', dataJ.authorities.indexOf('permission') != -1);
                  $('#audit_check').prop('checked', dataJ.authorities.indexOf('audit') != -1);
                  $('#filetype_check').prop('checked', dataJ.authorities.indexOf('filetype') != -1);

                  if($('#permission_check').is(":checked"))
                  {
                    $('.permission_config').show();

                    $.each(dataJ.folder_list,function(i,item){

                      $('#folder_list').append($('<div/>', {
                          value: item.trim(),
                          text: item.trim()
                      }));

                    });

                    folderlistSetValue();
                  }
            
            if(dataJ.is_user == '1')
            {
            $('.user-options').show();
            }

                  if(dataJ.isad == '1') {
                      $('.password_block').remove();
                  }

                  if($('#isuser').is(':checked') &&
                  !$('#permission_check').is(':checked') &&
                  !$('#audit_check').is(':checked') &&
                  !$('#filetype_check').is(':checked')
                  ){
                    $('.user-warning-msg').show();
                  }else{
                    $('.user-warning-msg').hide();
                  }
              }
          });

      });
  </script>
  <!-- END FOOTER -->
</body>
</html>
Cevapla
#7
Şu adımları denemek isteyebilirsiniz 

(1) Web servise test için yeni bir path atayın,
(2) Path response için veri tabanından Türkçe harf sorunu görülebilen bir tanesini herhangi bir tema kullanmadan çıplak olarak browser ekranında düzgün görüp görmediğinizi test edin, 
(3) Bundan sonra adım adım, bu path'e; önce verdiğiniz html header kısmı eklenmiş halini response edin.
{{Include(['include\\header.html'])}}

(4) top header eklenmiş halini vs. vs. 
{{Include(['include\\topmenu.html'])}}


amaç hangi aşamada TR sorunu oluşuyoru bulup onu orada çözmek olmalı.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#8
MySQL'de türkçe karakterlerle düzgün işlem yapabilmek için CharacterSet'i Latin5 yapmanız gerekir.
Cevapla
#9
Merhaba,

Sorun db'de ki görünmde veya html tarafında değil. Sayfayı decode etme kısmında bir sorun var. Decod edemdiği için bozulmalar oluyor. Bu süreci debug etmenin bir yolu var mı? Tüm adımları gösterebilecek. vs
Cevapla
#10
Merhaba.

- FDConnection'un parametrelerine şunu eklerseniz WEB ile PC arasındaki payda eşitlenecektir. Idea

     Params.Values['CharacterSet']:= 'utf8';


- Win32 tarafından girilmiş eski kayıtlar ile boşuna incelemeyin, değişmeyecektir. Testinizi yeni kayıt girerek her iki platformda da yeniden gerçekleştirin.

- Yeni yapılan her kayıt hem web tarafında hem de PC tarafında düzgün görüntülenecektir.

- Eski kayıt miktarı da göz önüne alınarak basit bir döngü ile migration sağlanabilir sorun kökten çözülür.

Test görüntüleri

Parametrede UTF 8 yokken görüntüleme :
Web girişleri bozuk, FireDAC (ilk satır - UTF8 parametresi olmadan hali ) girişi normal görünüyor.... 

aymwazuziwhltducrqu8.png


toixvfhn6fbvmfl7ir9y.png



gdeq5f4vfhpgqufjgmbw.png
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SAOP Servis Out of Memory Hatası 3ddark 11 2.409 12-03-2025, Saat: 11:44
Son Yorum: 3ddark
  TMS WEB CORE TÜKÇE DİL SORUNU ikurt07 4 1.839 01-10-2024, Saat: 10:03
Son Yorum: oser
  AdoDataset Tarih sorunu ikurt07 2 1.189 11-09-2023, Saat: 07:58
Son Yorum: sabanakman
  TMS Web Core Türkçe ikurt07 7 3.569 01-12-2022, Saat: 12:02
Son Yorum: ikurt07
  stylesheet.css dosyası edit işlemi sorunu bünyamin68 6 3.561 27-09-2021, Saat: 10:05
Son Yorum: engerex



Konuyu Okuyanlar: 1 Ziyaretçi