2017-05-01 2 views
1

utf8/utf8mb4 인코딩을 사용하여 백업을 만들 때 내 테이블 쿼리가 인식 할 수없는 문자를 반환합니다.UTF8 인코딩을 사용하여 특정 테이블을 어떻게 mysqldump합니까?

"-u{0} -p{1} -c -e --default-character-set=utf8 dbname tablename" 

출력 : 내가 XAMPP에 백업을 생각하면

-- MySQL dump 10.13 Distrib 5.6.24, for Win32 (x86) 
-- 
-- Host: localhost Database: dbname 
-- ------------------------------------------------------ 
-- Server version 5.6.24 

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
/*!40103 SET @[email protected]@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; 

-- 
-- Table structure for table `tablename` 
-- 

DROP TABLE IF EXISTS `tablename`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `tablename` (
    `Sno` int(11) NOT NULL DEFAULT '0', 
    `ShopItemcode` varchar(255) DEFAULT NULL, 
    `Itemname` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`Sno`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
/*!40101 SET character_set_client = @saved_cs_client */; 

-- 
-- Dumping data for table `tablename` 
-- 

LOCK TABLES `tablename` WRITE; 
/*!40000 ALTER TABLE `tablename` DISABLE KEYS */; 
INSERT INTO `tablename` VALUES (992,'JPBC20','ஜீனà¯à®¸à¯(பூடà¯à®•à®Ÿà¯)சி20'),(993,'JPBC22','ஜீனà¯à®¸à¯(பூடà¯à®•à®Ÿà¯)சி22'),(994,'JPBC24','ஜீனà¯à®¸à¯(பூடà¯à®•à®Ÿà¯)சி24'); 

하지만, 문자가 좋은 반환을 의미

는 여기에 내가 C#에서 사용하고있는 백업 명령입니다.

+0

이 같이

는, 당신은 그것을 시도를 제공 할 수 있습니다. 그것은 MySqlDump에 대한 대안입니다 : https://github.com/adriancs2/MySqlBackup.Net – mjb

답변

1

타밀어? ஜீன...로 시작 하시겠습니까? 너는 모지 베 케야. 즉, 경로의 어딘가에서 뭔가가 utf8 대신 latin1으로 선언되었습니다.

여기 Mojibake에 대한 설명은 Trouble with utf8 characters; what I see is not what I stored입니다. 그 제안이 해결책을 제시하는지 확인하십시오.

"이중 인코딩"될 가능성이 있습니다. SELECT HEX(Itemname) ...; 이중 인코딩 경우 ஜீன 올바르게 저장 UTF8에

E0AE9C E0AF80 E0AEA9 또는
C3A0 C2AE C593 C3A0 C2AF E282AC C3A0 C2AE C2A9 것이다.

쉽게 다시로드 할 수없는 경우 다음과 같이 내가 성공 http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases

+0

예, 타밀어. 인코딩에 대한 세부 내역에 감사드립니다. – mathi

0

를 참조 데이터를 수정하려면 : 내 테이블로 라틴 문자 집합을 수출

는, 그것은 잘 내 쿼리를 반환하지만 다른 언어 값만 이중 인코딩으로 반환됩니다. utf8 charset을 사용하여 쿼리를 가져 오면 원본으로 이중 인코딩 된 데이터를 반환합니다. 나는 C# 네이티브 라이브러리를 작성했습니다

mysqldump -uuser -ppassword --default-character-set=latin1 

mysql -uuser -ppassword --default-character-set=utf8 
관련 문제