编码重音符号和特殊字符PHP
Encode accents and special characters PHP
我在php上传imgs时遇到了一个小问题。
我正在制作一个网站,用户可以在该网站上查看图像的预览,但如果图像中包含重音错误,例如"Nenúfares.jpg"将变为"Nenâºfares.jpg.jpg"
我该怎么解决这个问题?
曾考虑过在收到警报时使用一些方法进行选择。(JS)包含重音等特殊字符。。。
Mi代码
PHP:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000000)
&& in_array($extension, $allowedExts))
{
$ruta ="tmp/".$_FILES["file"]["name"];
$rutafinal =str_replace(" ","_",$ruta); //Change " " for "_"
move_uploaded_file($_FILES["file"]["tmp_name"],$rutafinal);
echo $rutafinal;
}
else
{
echo "Archivo no valido";
}
JavaScript(AJAX):
function previewIMG() {
var formData = new FormData();
var file = $("#fileselectInput")[0].files[0];
formData.append("file", file);
formData.append("name", file.name);
var url ="subir_img_producto.php";
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var http = new XMLHttpRequest();
http.open("POST", url, true);
http.send(formData);
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
var result= http.responseText;
var comprobar= 'tmp';
if (result.indexOf(comprobar) !== -1) {
document.getElementById('cuadroIMG').src = http.responseText;
}else{
alert(http.responseText);
}
}
}
}
HTML:
<form id="form">
<input type="file" id="fileselectInput" onchange="previewIMG()"><br>
</form>
非常感谢!
除了Amauri已经很好地解决了utf-8问题外,您可能还想做的另一件事是:
更换
$ruta ="tmp/".$_FILES["file"]["name"];
$rutafinal =str_replace(" ","_",$ruta); //Change " " for "_"
带有
$ruta = "tmp/".$_FILES["file"]["name"];
$fileExtension = substr($ruta,stripos ($ruta,'.'));
$rutafinal = 'tmp/' . md5(time() . $ruta).'.'.$fileExtension;
这将从当前时间戳创建一个md5哈希,并将您的文件名作为新文件名,从而使您有更好的机会确保您的文件在系统中是唯一的,并消除"特殊字符"。
我喜欢做的一件事是,当两个用户上传同一个文件时,还使用用户的唯一id(如果存在的话)作为附加项,以防止出现问题(可能会在像avatar.jpeg和这样的文件名中经常发生)。
毕竟,md5不是无冲突的,所以您可能需要在这里做一些额外的工作。增加机会的一种方法是使用时间戳驱动的目录:
$rutafinal = 'tmp/' . date("Y/m/d/h/i", time()) . '/'. md5(time() . $ruta).'.'.$fileExtension;
例如,这将把你的文件放在中
<yourimageuploadfolder>/2014/04/10/14/04/5eb63bbbe01eeed093cb22bb8f5acdc3.jpg
您使用的是UTF-8还是ISO-8859-1?您需要使用与数据库相同的编码。假设您的页面是UTF-8,数据库是Latin-1(ISO 8859-1/2),则需要使用utf8_encode转换数据。
我认为你可以解决你的编码问题,迫使你像这样的标题
header('Content-type: text/html; charset=utf-8');
昨天我解决了这样的编码问题。
希望能有所帮助。
您可以迭代并用普通字符替换重音符号:
$name = str_replace("ú", "u", $name);
相关文章:
- javascript替换换行符和特殊字符
- angularjs删除动态形式元素中的特殊字符
- 使用json_encode通过xmlhttp.responseText发送特殊字符(即caron)
- 在搜索中考虑特殊字符的
- 清理字符串以避免特殊字符破坏php生成的javascript
- 处理 PHP/JavaScript 中带有特殊字符的 URL
- 如何将文本字段('+<>$“)中的特殊字符保存到数据库中,然后使用 PHP 检索它们
- 在 PHP 中使用邮件函数时正确转义 JavaScript 文档代码中的特殊字符
- 如何防止用户在输入框中键入特殊字符由PHP而不是jQuery
- Json_encode()给出了' '等特殊字符.我如何在PHP中替换它们
- 将特殊字符从php传递到javascript
- 尝试通过JQuery Ajax发送特殊字符到PHP脚本
- Javascript var与特殊字符与AJAX $_GET在php
- PHP中的特殊字符(如omega和beta)字符串匹配
- PHP/jQuery以提交/保存具有所有特殊字符值的输入
- 如何比较包含特殊字符的JavaScript字符串与PHP's htmlentities()编码的字符串
- HTML特殊字符和PHP
- php编码特殊字符
- 编码重音符号和特殊字符PHP
- 如何替换PHP中不需要的字符或特殊字符