首先,我的代码正在运行......但结果文件导致我的服务器出现问题。只有具有奇怪字符的文件才会导致服务器上出现错误,例如文件不存在或尝试通过FTP打开文件时连接到文件时出错。所有没有奇怪字符的文件在服务器上运行正常,可以打开和编辑。
这是我的工作流程:
TextView
获取文字,通过此代码运行以删除不需要的字符: replaceAll("[^a-z ,()A-Z0-9]+", "-");
使用此PHP脚本将此文本文件上传到服务器:
<?php
$file_path = "uploads/";
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
echo "success";
} else{
echo "fail";
}
?>
文件名包含这些奇怪的字符,我假设由于用户屏幕上的非英文字符。
我需要小心,因为将文件上传到我的服务器的路径是基于此文件名,我不知道如何使用非英文字符进行测试。任何帮助深表感谢。我需要删除/替换任何非英文字符,而不会弄乱文件路径。
答案 0 :(得分:0)
请使用此行帮助您。
String styledText =您的文件名;
textView.setText(Html.fromHtml(styledText));
答案 1 :(得分:0)
从技术上讲,您可以通过使用mb_convert_encoding将服务器上的字符串转换为UTF-8来解决此问题,但实际上您的代码非常不安全,因为您使用传递的用户变量作为文件路径,并且黑客可以发送/../ ../../等等。
我用于两者的解决方案是使用bin2hex将服务器上传递的文件名转换为十六进制字符串。这样你就有了一个非常安全的文件名,没有编码问题。