COLAÇÃO NA BASE MYSQL COM ASP CLÁSSICO
Estou com problemas com acentos e cedilha, mas já precebi que o problema está em meu código de iserção de dados no painel de controle, pois já alimentei diretamente a base de dados que está hospedada no servidor Kinghost, e o BD aceita os acentos e cedilhas, e minha consulta também vem com o acento e cedilha. Abaixo o código de formulário de inserção(forminsert.asp) e o código de inserção(inset.asp). Estou usando o callation utf8mb4_general_ci.
forminsert.asp
forminsert.asp
<%
Response.CodePage = 65001
Response.Charset = "utf-8"
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
Response.LCID = 1046 ' Português-Brasil
%>
Cadastro de Imóveis
.style2 { background-color: #999999; }
.style3 { font-weight: bold; background-color: #0833beff; }
.auto-style1 { font-weight: bold; background-color: #0833beff; }
.auto-style2 { background-color: #fcfcfcff; }
input[type="text"], select, textarea {
color: #0000CC;
font-family: Verdana;
font-size: 8pt;
}
input[type="file"] {
width: 352px;
}
function valida_campo() {
var titulo = document.form.titulo.value.trim();
if (titulo == "") {
alert("Entre com o título!");
document.form.titulo.focus();
return false;
}
var dormitorio = document.form.dormitorio.value.trim();
if (dormitorio == "") {
alert("Entre com nº de dormitórios!");
document.form.dormitorio.focus();
return false;
}
var suite = document.form.suite.value.trim();
if (suite == "") {
alert("Entre com nº de suítes!");
document.form.suite.focus();
return false;
}
return true;
}
:: Cadastro de Imóveis ::
Imóvel:
Nº Dormitórios:
Nº Banheiros:
Área do Lote:
Área Construída:
Tipo:
Apartamento
Casa
Chácara
Comercial
Lote
Sítio
Localidade:
Itaipuaçu
Maricá
Niterói
Rio de Janeiro
Outras
Bairro:
Foto :
" size="40">
Preço:
Visibilidade:
Não
Sim
Destaque:
Não
Sim
Descrição:
Proprietário:
Telefone:
Alterado em 11/11/2025 17:50:15
insert.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Option Explicit
Response.Expires = 0
Response.Charset = "utf-8"
Response.CodePage = 65001
Response.LCID = 1046 ' Português-Brasil
' =====================================
' CONFIGURAÇÃO DO UPLOAD E BANCO MYSQL
' UTF-8 / utf8mb4_general_ci
' =====================================
Dim Upload, File, objConn, strConn, strQuery
Dim titulo, dormitorio, suite, visibilidade, tipo, local, bairro
Dim preco, status, descricao, area, contrucao, proprietario, telefone
Dim fotos(20), i, filePath, fileName, fotoURL
' === CRIA OBJETO DE UPLOAD ===
On Error Resume Next
Set Upload = Server.CreateObject("Persits.Upload")
If Err.Number <> 0 Then
Response.Write "<p style='color:red'><b>? Erro:</b> O componente Persits.Upload não está disponível neste servidor.</p>"
Response.Write "<p>Peça à KingHost para ativar o componente <b>Persits.Upload</b> no seu ambiente ASP.</p>"
Response.End
End If
' === SALVA OS ARQUIVOS NA PASTA /fotos ===
Upload.OverwriteFiles = False
Upload.Save Server.MapPath("/fotos")
' === CAMPOS DO FORMULÁRIO (UTF-8) ===
titulo = Upload.Form("titulo")
dormitorio = Upload.Form("dormitorio")
suite = Upload.Form("suite")
visibilidade = Upload.Form("visibilidade")
tipo = Upload.Form("tipo")
local = Upload.Form("local")
bairro = Upload.Form("bairro")
preco = Upload.Form("preco")
status = Upload.Form("status")
descricao = Upload.Form("descricao")
area = Upload.Form("area")
contrucao = Upload.Form("contrucao")
proprietario = Upload.Form("proprietario")
telefone = Upload.Form("telefone")
' === LÊ AS FOTOS ENVIADAS ===
For i = 1 To 20
On Error Resume Next
Set File = Upload.Files("foto" & i)
If Not File Is Nothing Then
fileName = File.FileName
If fileName <> "" Then
fotoURL = "https://www.jmimoveis.cim.br/fotos/" & File.FileName
fotos(i) = fotoURL
Else
fotos(i) = ""
End If
Else
fotos(i) = ""
End If
Next
' =====================================
' CONEXÃO COM MYSQL (UTF-8)
' =====================================
Set objConn = Server.CreateObject("ADODB.Connection")
' OBS: use o driver UNICODE e charset=utf8mb4
strConn = "Driver={MySQL ODBC 8.0 Unicode Driver};" & _
"Server=mysql.jmimoveis.cim.br;" & _
"Database=jmimoveis;" & _
"Uid=jmimoveis;" & _
"Pwd=******;" & _
"Option=3;CHARSET=utf8mb4;NO_SSPS=1;"
On Error Resume Next
objConn.Open strConn
If Err.Number <> 0 Then
Response.Write "<p style='color:red'><b>? Erro ao conectar ao MySQL:</b> " & Err.Description & "</p>"
Response.End
End If
' Garante UTF-8 ativo na sessão MySQL
objConn.Execute "SET NAMES utf8mb4 COLLATE utf8mb4_general_ci"
objConn.Execute "SET CHARACTER SET utf8mb4"
objConn.Execute "SET collation_connection = 'utf8mb4_general_ci'"
' =====================================
' MONTA E EXECUTA O INSERT
' =====================================
strQuery = "INSERT INTO IMOVEL " & _
"(titulo, dormitorio, suite, visibilidade, tipo, local, bairro, " & _
"foto1, foto2, foto3, foto4, foto5, foto6, foto7, foto8, foto9, foto10, " & _
"foto11, foto12, foto13, foto14, foto15, foto16, foto17, foto18, foto19, foto20, " & _
"preco, status, descricao, area, contrucao, proprietario, telefone) VALUES (" & _
"'" & Replace(titulo,"'","''") & "'," & _
"'" & Replace(dormitorio,"'","''") & "'," & _
"'" & Replace(suite,"'","''") & "'," & _
"'" & Replace(visibilidade,"'","''") & "'," & _
"'" & Replace(tipo,"'","''") & "'," & _
"'" & Replace(local,"'","''") & "'," & _
"'" & Replace(bairro,"'","''") & "'," & _
"'" & Replace(fotos(1),"'","''") & "'," & _
"'" & Replace(fotos(2),"'","''") & "'," & _
"'" & Replace(fotos(3),"'","''") & "'," & _
"'" & Replace(fotos(4),"'","''") & "'," & _
"'" & Replace(fotos(5),"'","''") & "'," & _
"'" & Replace(fotos(6),"'","''") & "'," & _
"'" & Replace(fotos(7),"'","''") & "'," & _
"'" & Replace(fotos(8),"'","''") & "'," & _
"'" & Replace(fotos(9),"'","''") & "'," & _
"'" & Replace(fotos(10),"'","''") & "'," & _
"'" & Replace(fotos(11),"'","''") & "'," & _
"'" & Replace(fotos(12),"'","''") & "'," & _
"'" & Replace(fotos(13),"'","''") & "'," & _
"'" & Replace(fotos(14),"'","''") & "'," & _
"'" & Replace(fotos(15),"'","''") & "'," & _
"'" & Replace(fotos(16),"'","''") & "'," & _
"'" & Replace(fotos(17),"'","''") & "'," & _
"'" & Replace(fotos(18),"'","''") & "'," & _
"'" & Replace(fotos(19),"'","''") & "'," & _
"'" & Replace(fotos(20),"'","''") & "'," & _
"'" & Replace(preco,"'","''") & "'," & _
"'" & Replace(status,"'","''") & "'," & _
"'" & Replace(descricao,"'","''") & "'," & _
"'" & Replace(area,"'","''") & "'," & _
"'" & Replace(contrucao,"'","''") & "'," & _
"'" & Replace(proprietario,"'","''") & "'," & _
"'" & Replace(telefone,"'","''") & "')"
On Error Resume Next
objConn.Execute strQuery
If Err.Number = 0 Then
Response.Write "<p style='color:green'><b>? Imóvel cadastrado com sucesso!</b></p>"
Response.Write "<meta http-equiv='refresh' content='2;URL=selimo_.asp'>"
Else
Response.Write "<p style='color:red'><b>? Erro ao inserir no banco:</b> " & Err.Description & "</p>"
End If
objConn.Close
Set objConn = Nothing
Set Upload = Nothing
%>
Amigo já tive esse problema , abra seu arquivo no bloco de notas e salve como => Tipo de Arquivo ="Todos" e codificação UTF-8
Alterado em 06/11/2025 11:26:18
Fiz o procedimento não funcionou. Vou refazer a base de dados do zero, pois essa base é fruto de uma conversão de um bd access.
Dicas:
- Abra o arquivo asp em notepad++ e veja se ele está em utf8
- Experimente salvar via linha de comando (ou algum Gerenciador como o dbeaver) e veja se está sendo somente via site o problema
Depois posta ai se deu certo
- Abra o arquivo asp em notepad++ e veja se ele está em utf8
- Experimente salvar via linha de comando (ou algum Gerenciador como o dbeaver) e veja se está sendo somente via site o problema
Depois posta ai se deu certo
Aproveitando, fica a dica, use um Dictionary que te permita ter chave/valor assim voce podia acabar com esse insert horroroso
Vou deixar aqui uma conversão de scripts meus de PHP para asp classico que usam esse 'inteligencia'
Insert
Update
Auxiliares
Veja que eu tinha uns 'atalhos' de nome (uid para usuario, now(), ip, etc...)
E para usar
Vou deixar aqui uma conversão de scripts meus de PHP para asp classico que usam esse 'inteligencia'
Insert
Function dbInsert(tableName, data)
On Error Resume Next
Dim campo, valor, campos, valores, sql, key
Dim v
If IsEmpty(data) Or IsNull(data) Then
dbInsert = False
Exit Function
End If
campos = ""
valores = ""
For Each key In data
campo = key
v = data(key)
' Substituições automáticas (sem aspas nas funções SQL)
v = Replace(v, "uid()", getUID())
v = Replace(v, "cid()", getCID())
v = Replace(v, "pid()", getPID())
v = Replace(v, "uip()", "'" & getIP() & "'")
v = Replace(v, "ip()", "'" & getIP() & "'")
v = Replace(v, "now()", "now()")
v = Replace(v, "null", "null")
' Escapar aspas simples
If Not InStr(1, v, "now()", vbTextCompare) > 0 And Not InStr(1, v, "null", vbTextCompare) > 0 Then
v = Replace(v, "'", "''")
v = "'" & v & "'"
End If
campos = campos & campo & ","
valores = valores & v & ","
Next
' Remove vírgula final
If Right(campos, 1) = "," Then campos = Left(campos, Len(campos) - 1)
If Right(valores, 1) = "," Then valores = Left(valores, Len(valores) - 1)
sql = "INSERT INTO " & tableName & " (" & campos & ") VALUES (" & valores & ")"
dbInsert = (dbExecute(sql) > 0)
End Function
Update
Function dbUpdate(tableName, data, whereClause)
On Error Resume Next
Dim key, v, sql, setPart, i, total
If IsEmpty(data) Or IsNull(data) Then
dbUpdate = False
Exit Function
End If
If Trim(whereClause) = "" Then
' Evita update sem where
Call KLog("Update sem where na tabela " & tableName)
dbUpdate = False
Exit Function
End If
setPart = ""
total = 0
For Each key In data
total = total + 1
Next
i = 0
For Each key In data
v = data(key)
i = i + 1
' Substituições especiais
v = Replace(v, "uid()", getUID())
v = Replace(v, "cid()", getCID())
v = Replace(v, "pid()", getPID())
v = Replace(v, "uip()", "'" & getIP() & "'")
v = Replace(v, "ip()", "'" & getIP() & "'")
v = Replace(v, "now()", "now()")
v = Replace(v, "curdate()", "curdate()")
v = Replace(v, "today()", "curdate()")
v = Replace(v, "null", "null")
If Not (InStr(1, v, "now()", vbTextCompare) > 0 Or InStr(1, v, "curdate()", vbTextCompare) > 0 Or InStr(1, v, "null", vbTextCompare) > 0) Then
v = Replace(v, "'", "''")
v = "'" & v & "'"
End If
setPart = setPart & key & " = " & v
If i < total Then setPart = setPart & ", "
Next
sql = "UPDATE " & tableName & " SET " & setPart & " WHERE " & whereClause
dbUpdate = (dbExecute(sql) > 0)
If dbUpdate = False And dbError() = "" Then dbUpdate = True
End Function
Auxiliares
Function dbExecute(sql)
On Error Resume Next
Dim conn, result
Set conn = Application("conexao") ' sua conexão global ADODB
conn.Execute sql, result
If Err.Number <> 0 Then
Call KLog("Erro SQL: " & sql & " - " & Err.Description)
dbExecute = 0
Else
dbExecute = result
End If
End Function
Function dbError()
If Err.Number <> 0 Then
dbError = Err.Description
Else
dbError = ""
End If
End Function
Sub KLog(msg)
' Implementação simples de log
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Server.MapPath("/logs/db.log"), 8, True)
f.WriteLine Now() & " - " & msg
f.Close
End Sub
Veja que eu tinha uns 'atalhos' de nome (uid para usuario, now(), ip, etc...)
E para usar
Dim dados
Set dados = Server.CreateObject("Scripting.Dictionary")
dados.Add "nome", "VBMania"
dados.Add "idade", 35
dbInsert "usuarios", dados
Citação:Dicas:- Abra o arquivo asp em notepad++ e veja se ele está em utf8- Experimente salvar via linha de comando (ou algum Gerenciador como o dbeaver) e veja se está sendo somente via site o problemaDepois posta ai se deu certo
Vou fazer o teste e posto a solução.
Sem querer ofender
, mas o mais urgente é sair desse teu insert fardado ao fracasso.
Pense como arrays (chave/valor) e assim seja insert/update você não vai correr riscos.
Vai contando aqui se deu certo
, mas o mais urgente é sair desse teu insert fardado ao fracasso.Pense como arrays (chave/valor) e assim seja insert/update você não vai correr riscos.
Vai contando aqui se deu certo
Faça seu login para responder